当前位置: 首页 > 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.zskr.cn/news/110122.html

相关文章:

  • 起底欧洲工业经典HMI:意大利UniOP工业触摸屏的诞生、发展与产品体系解读
  • 2025年最新濮阳装修公司推荐TOP5:五家企业助力多元需求品质适配 - 深度智识库
  • Aiops探索:基于 Dify 做一个故障诊断和根因分析的Aiops智能体【转】
  • 百度秒哒商业应用生成数突破50万个,创造价值超50亿
  • 专业商标转让购买平台推荐:从低价标到精品标,满足不同企业需求 - 资讯焦点
  • Linly-Talker开源教程:打造会说话的AI数字人
  • USB设备识别利器:linux-usb.org/usb.ids
  • YOLOv11最新进展:论文解读与代码预测
  • C#调用Linly-Talker API实现Windows数字人客户端
  • 2025年实验室设备行业五大技术领先企业排行榜,贝加尔科技的 - myqiye
  • Seed-Coder-8B-Base 自动生成Ansible Playbook能力实测
  • Step-Video-T2V-Turbo:300亿参数开源视频生成新突破
  • Langchain-Chatchat 搭建本地知识库实战
  • LobeChat能否协助撰写简历?求职者福音来了
  • FPGA图像处理之:RGB转Bayer——3x3窗BGGR格式双线性插值
  • YOLO-v5与TensorRT训练部署全指南
  • SHA-256 哈希实现最基本的加密
  • FLUX.1-Controlnet-Union快速配置指南
  • HunyuanVideo-Foley:AI自动生成专业级音效
  • Miniconda安装ComfyUI及NTCosyVoice文本转语音
  • Open CV
  • FaceFusion错误:代理环境下localhost访问问题
  • Langchain-Chatchat本地知识库部署与优化
  • 手把手部署Qwen3-VL-30B:GPU配置与推理优化
  • LobeChat与Supabase结合:低成本搭建带数据库的AI应用
  • Nano Banana Pro 封神归来:其他 AI模型全给我“跪下”!Nano Banana Pro 首发评测
  • 超简单易用的虚拟组网软件GxLan
  • OpenAI开源gpt-oss-120b/20b:单卡可跑的MoE推理模型
  • 私有化部署AI知识库——Anything-LLM企业级解决方案详解
  • 提升AI研发效率:使用github镜像同步PaddlePaddle最新特性