类型匹配和类型转换 第四本【第三章】60~69页
---------------------------------类型转换-----------------------------
int系列(含字符) float系列 bool型 string型 四种基础数据类型的转换
【类型转换时,注意二者之间是否有转的原始基础,否则会转成该类型的默认零值】
【多字节空间数据类型和少字节空间数据类型可以互相转,但大空间转小空间可能导致溢出,表现为数值的变化】
1、直接类型强转即可
可用于 int系列(含字符) float系列各自内部和彼此之间的转化; ///也可用于int系列转为string【但这种转化不建议直接强转】
需注意的:多字节空间数据类型和少字节空间数据类型可以互相转,但大空间转小空间可能导致溢出,表现为数值的变化
2、int系列(含字符) float系列 bool型 -----转为----> string型
使用strconv包的函数
使用 fmt包下的fmt.Sprintf函数
3、string型-----转为---->int系列(含字符) float系列 bool型
使用strconv包的函数
---------------------------------类型匹配-----------------------------
1、数据之间在赋值、计算时,需要这些数据之间类型是匹配的
2、int系列的整数【float系列同理】,与同系列的变量在一起时,整数【含字符】会默认自己变成和变量一样的
类型从而不会报类型不匹配的错,但如果有溢出,会报错
如:var a int32 c:= a+1098 不报错
但 var a int8 c := a+1098 会报错 因为1098转成int8类型会溢出
报错为:cannot convert constant 8889 to type int8
另参见:go0ji1chu3/16array0slice/array/example.go:11
---------------------------------值类型&&引用类型-----------------------------
值类型在内存的栈中,
引用类型在内存的堆中,如果没有变量使用该地址,该地址对应的数据空间就会成为垃圾并被GC回收。