(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)
}