我在"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类型了