golang学习笔记: 类型
2026/6/12 21:10:16 网站建设 项目流程

基本类型

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")}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询