Go语言的类型转换|青训营笔记

74 阅读1分钟

(1)不能使用 var p float32 =1.0*a / 12,只能使用var p float32 = float32(a) / 12的方式

(2)类似的,bool与非bool也不能直接转换。c := true + 12 // 错误

(3)string型不能与非string型进行转换, 即c := "123" + 12 // 错误

(4)nil不能与任意未定义类型进行转换

(5)隐式转换的优先级为:int < rune < float < Imag

同时对于,已定义类型的常量都不会发生类型转换。换言之,编译器不允许对变量标识符引用的值进行强制类型转换。即无关优先级,下述c=xx代码中的a、b均不会发生类型转换,只能是为定义类型的常量1.0转换为a、b的类型。

对应相关的代码语句

func Testc() {
	//赋值语句,强类型,会根据赋值类型自动识别出
	var str = "inittal"
	var a, b int = 1, 2
	var c = true
	var d float32 = 1.0
	e := d
	g := 12.0 + float64(a)
	e = 10
	g *= math.Pi / 180
	fmt.Println(a, b, c, d, e, g)
	fmt.Printf("%s\n", str)
	fmt.Printf("%d %d", a, b)

}