除常量、别名类型以及未命名类型外,Go强制要求使用显式类型转换。
a := 10
b := byte(a)
c := a + int(b) //混合类型表达式必须确保类型一致
1.语法歧义
如果转换的目标是指针、单向通道或没有返回值的函数类型,那么必须使用括号,以避免造成语法分解错误。
x := 100
p := *int(&x) //编译错误 cannot convert &x (type *int) to type int
正确的做法是用括号,让编译器将*int解析为指针类型。
(*int)(p)
(<-chan int)(c)
(func())(x)
func()int(x) //返回值的函数类型可省略括号,但依然建议使用。
(func()int)(x)
网友评论