物理的类型转换通常是在不同数据类型之间通过显式方式进行的,其中有些是安全的,比如从int8到int16,但有些则可能伴随着一定程度上的信息损失
- 长整变短整,损失值域
- 浮点变整型,损失精度
- 整型变浮点,损失有效数字
逻辑的类型转换通常是借助strconv包在字符串和其它类型之间相互转换
- bool->string:strconv.FormatBool(true)
- string->bool:strconv.ParseBool("true")
无论哪种类型转换,原数据的类型都不会发生任何变化,只是创建了新数据
// 类型转换和类型检查
// strconv包提供了一整套类型转换函数,用于在字符串和其它类型之间双向转换
package main
import ("fmt""reflect""strconv"
)
func main() {var b bool b = truefmt.Println(b, reflect.TypeOf(b)) // true,boolvar s strings = strconv.FormatBool(true)fmt.Println(s, reflect.TypeOf(s)) // true string
}