go09 类型转换
类型不能混着用
连接两个字符串,使用 + 运算符:
如果想连接字符串和数值,是会报错的:
整型和浮点类型也不能混着用:
数值类型间的转换
下例中,如果想把 age 转化成 浮点类型,需要使用目标类型将其“包裹”起来:
从浮点类型转为整数类型
可以从浮点类型转化为整数类型,小数点后边的部分会被截断,而不是舍入:
无符号和有符号整数类型之间也需要转换。
不同大小的整数类型之间也需要转换
类型转换时需谨慎
“环绕行为”:
可以通过 math 包提供的 max、min 常量,来判断是否超过最大最小值:
字符串转换
想把 rune、byte 转化为 string,语法是一样的:
想把数值转化为string,它的值必须能转化为 code point。
strconv 包的 Itoa 函数就可以做这件事:
Itoa 是 Integer to ASCII 的意思。
Unicode 是 ASCII 的超集,它们前 128 个 code points 是一样的(数字、英文字母、常用标点)。
另外一种把数值转化为 string 的方式是使用 Sprintf 函数,和 Printf 略类似,但是会返回一个 string:
strconv 包里面还有个 Atoi(ASCII to Integer) 函数。
由于字符串里面可能包含任意字符(比如"10ds"),或者要转换的数字字符串太大,所以 Atoi 函数可能会发生错误:
如果 err 的值为 nil,那么就代表没发生错误。
**提示:**Go 是静态类型语言,一旦某个变量被声明,那么它的类型就无法再改变了。
布尔类型的转换
Print 家族的函数,会把 bool 类型的值打印成 true/false 的文本。
下面的 Sprintf 函数是将其他类型转换成字符串,赋值给 launchText 。
某些语言里,经常把 1 和 0 当作 true 和 false,但是在 Go 里面不行。
注意:如果你想使用 string(false), int(false);bool(1), bool(“yes”) 等类似的方式进行转换,那么 Go 编译器会报错。