golang里有几种类型:1.基础数据类型2.复合数据类型
1.基础数据类型
- 整数类型:
int
,int8
,int16
,int32
,int64:int类型的大小取决于平台,32位(四字节),64位(八字节),其他的都是多少数字就是多少位,大转小会丢精度,小转大无压力
- 无符号整数类型:
uint
,uint8
,uint16
,uint32
,uint64
:跟 Int型区别不大,就是取值范围没了负数 - 浮点数类型:
float32
,float64:float32 float64类型底层数据表示是用IEEE 754标准表示的,业务环境用的比较少,总的来说就是float64占空间大,精度高,对内存占用要求高且精度要求不高的可以用float32。对浮点数数据类型转换有兴趣的可以直接去搜IEEE754,一般情况下用不上...
- 布尔类型:
bool 不能和其他值直接转,得做判断是否是0,是否是true...
- 字符类型:
rune
(等同于int32
,用于表示 Unicode 字符)rune底层是int32类型,用于表示unicode字符的类型,可以和int,string里的单个字符互转 -
字节类型:
byte
(等同于uint8) 可以和Int互转,int值太大转的时候不会报错但是按照%c输出的时候会没有输出,和string里单个字符互转逻辑与rune相同。byte,rune互转,rune转byte大转小可能会丢失数据。
2.复合类型
- 数组:数组和数组之间不可以转,除非类型相同长度相同
- 切片:数组切片之间可以互相转
- 字典(映射):不可
- 结构体:字段名称和类型相同就可以转
- 接口:可以和具体类型互转
- 函数:参数和返回值类型相同可互转
- channel:通道的元素类型和方向完全相同的情况下可互转