我在"The Go Programming Language Specification"中读到了关于x.(T)这样的语法可以对变量是否符合某一type或interface进行判断于是我写了如下的代码
func main() { v:="aaaaaa" s,ok:=v.(string) fmt.Printf("%s:%b ",s,ok) }
结果是悲催的编译错误
func main() { v:="aaaaaa" checkit(v) } func checkit(v interface{}){ s,ok:=v.(string) fmt.Printf("%s:%b ",s,ok) }
于是运行成功
然后我冷静下来思考这个问题为毛呢......
x.(T)这样的语法
这样的语法只适应于x是interface类型
函数
func checkit(v interface{}){
s,ok:=v.(string)
fmt.Printf("%s:%b
",s,ok)
}
相当于把参数转换成了interface类型了