好好爱自己!

Go语言关于Type Assertions的疑问

 

我在"The Go Programming Language Specification"中读到了关于x.(T)这样的语法可以对变量是否符合某一type或interface进行判断于是我写了如下的代码

func main() {
	v:="aaaaaa"
	s,ok:=v.(string)
	fmt.Printf("%s:%b\n",s,ok)

}

  结果是悲催的编译错误

func main() {
	v:="aaaaaa"
	checkit(v)
}
func checkit(v interface{}){
	s,ok:=v.(string)
	fmt.Printf("%s:%b\n",s,ok)
}

  于是运行成功
然后我冷静下来思考这个问题为毛呢......

 

 

x.(T)这样的语法
这样的语法只适应于x是interface类型

函数
func checkit(v interface{}){
    s,ok:=v.(string)
    fmt.Printf("%s:%b\n",s,ok)
}

相当于把参数转换成了interface类型了

posted @ 2019-05-27 22:27  立志做一个好的程序员  阅读(184)  评论(0编辑  收藏  举报

不断学习创作,与自己快乐相处