当前位置: 首页 > news >正文

golang学习笔记: 类型

基本类型

1. 布尔类型

varbbool=truevarflag=false// 类型推断

2. 数值类型

整数类型
variint// 平台相关,32或64位vari8int8// -128 ~ 127vari16int16// -32768 ~ 32767vari32int32// -2^31 ~ 2^31-1vari64int64// -2^63 ~ 2^63-1varuuint// 无符号varu8uint8// 0 ~ 255varu16uint16// 0 ~ 65535varu32uint32// 0 ~ 2^32-1varu64uint64// 0 ~ 2^64-1varrrune='A'// int32 的别名,表示 Unicode 码点varbybyte=0x41// uint8 的别名
浮点数
varf32float32=3.14varf64float64=3.1415926535
复数
varc64complex64=1+2ivarc128complex128=complex(3,4)

3. 字符串类型

varsstring="Hello"varmultiline=`多行 字符串`

复合类型

1. 数组

vararr1[3]int=[3]int{1,2,3}arr2:=[5]string{"a","b","c"}arr3:=[...]int{1,2,3,4,5}// 编译器推断长度

2. 切片(动态数组)

varslice1[]intslice2:=[]string{"a","b","c"}slice3:=make([]int,5)// 长度5,容量5slice4:=make([]int,5,10)// 长度5,容量10// 从数组创建arr:=[5]int{1,2,3,4,5}slice5:=arr[1:3]// [2, 3]

3. 映射(Map)

varm1map[string]intm2:=map[string]int{"a":1,"b":2}m3:=make(map[string]int)m3["key"]=100

4. 结构体

typePersonstruct{NamestringAgeintAddressstring}p1:=Person{"张三",25,"北京"}p2:=Person{Name:"李四",Age:30}p3:=&Person{}// 指针

5. 指针

varp*intx:=10p=&x*p=20// 修改 x 的值

特殊类型

1. 函数类型

typeFuncTypefunc(int,int)intvaradd FuncType=func(a,bint)int{returna+b}

2. 接口类型

typeWriterinterface{Write([]byte)(int,error)}typeReaderinterface{Read([]byte)(int,error)}

3. 通道类型

varch1chanint// 双向通道varch2chan<-string// 只写通道varch3<-chanfloat64// 只读通道ch4:=make(chanint)// 无缓冲通道ch5:=make(chanint,10)// 缓冲大小为10

类型别名和自定义类型

类型别名

typeMyInt=int// MyInt 和 int 是同一类型

自定义类型

typeMyInt2int// MyInt2 是新类型,需要类型转换vara MyInt2=10varbint=int(a)// 需要显式转换

类型零值

variint// 0varffloat64// 0.0varbbool// falsevarsstring// ""varp*int// nilvarsl[]int// nilvarmmap[string]int// nilvarcchanint// nilvarifaceinterface{}// nil

类型转换

variint=42varffloat64=float64(i)varuuint=uint(f)// 字符串转换s:=string(65)// "A"num:=int('A')// 65// strconv 包import"strconv"str:=strconv.Itoa(123)// "123"num,_:=strconv.Atoi("456")// 456

类型断言

variinterface{}="hello"s:=i.(string)// 断言s,ok:=i.(string)// 安全断言// 类型 switchswitchv:=i.(type){caseint:fmt.Println("int:",v)casestring:fmt.Println("string:",v)default:fmt.Println("unknown")}
http://www.jsqmd.com/news/99440/

相关文章:

  • 2025年转刀切料机制造企业权威推荐榜单:手动切料机/半自动切料机/全自动切料机源头厂家精选 - 品牌推荐官
  • 起底欧洲工业经典HMI:意大利UniOP工业触摸屏的诞生、发展与产品体系解读
  • 专业之选,生态共赢:为什么涂鸦智能是擦窗机器人方案商的卓越伙伴 - 星报
  • 2025 宁波外贸推广机构 TOP5 推荐:锚定港口优势,赋能全域跨境增长 - GEO排行榜
  • 2025年最新濮阳装修公司推荐TOP5:五家企业助力多元需求品质适配 - 深度智识库
  • 数字风险量化技术,源堡科技以实力赋能企业安全 - 资讯焦点
  • YOLOv5详解:高效目标检测模型实战指南
  • 2025年十大靠谱压缩机推荐厂商排行榜,专业螺杆压缩机制冷机 - mypinpai
  • Aiops探索:基于 Dify 做一个故障诊断和根因分析的Aiops智能体【转】
  • 百度秒哒商业应用生成数突破50万个,创造价值超50亿
  • C语言指针(六)——函数指针数组
  • Linly-Talker开源教程:打造会说话的AI数字人
  • 专业商标转让购买平台推荐:从低价标到精品标,满足不同企业需求 - 资讯焦点
  • USB设备识别利器:linux-usb.org/usb.ids
  • 低延迟交互实现原理:LobeChat前端性能优化揭秘
  • Excalidraw多人协作卡顿?优化网络策略提升体验
  • YOLOv11最新进展:论文解读与代码预测
  • 2025年碳晶板知名厂家选哪家?口碑好的批发厂家推荐TOP5 - 工业品牌热点
  • LobeChat能否集成CI/CD流水线?DevOps自动化部署示例
  • 将LangGraph工作流转换为LangFlow可视化流程
  • 2025年十大滑雪场魔毯厂家排行榜,专业魔毯厂家设计与品牌商 - 工业推荐榜
  • C#调用Linly-Talker API实现Windows数字人客户端
  • 2025年实验室设备行业五大技术领先企业排行榜,贝加尔科技的 - myqiye
  • 08 - 使用Trae开发Python
  • Seed-Coder-8B-Base 自动生成Ansible Playbook能力实测
  • 餐饮人也能用的免费开源AI视觉算法
  • LobeChat能否集成支付宝?国内支付场景接入
  • LobeChat是否支持OAuth登录?用户权限管理方案探讨
  • 解决langchain-chatchat缺少__init__.py问题
  • 搭建Ollama并运行qwen,简单RAG实现