go语言学习道路(插曲)-一个疑惑的问题

来源:互联网 发布:行最简形矩阵是什么 编辑:程序博客网 时间:2024/05/17 02:42
最近写go语言程序的时候,发现了一个问题。先看代码:
// MusicPlay project main.gopackage mainimport ("fmt")type Cat interface {Meow()}type Tabby struct{}func (*Tabby) Meow() { fmt.Println("meow") }func GetACat() Cat {var myTabby *Tabby = nil// Oops, we forgot to set myTabby to a real valuereturn myTabby}func TestGetACat() {var ICat Catvar tabby *Tabby = nilICat = tabby//ICat = GetACat()//ICat = nilif ICat == nil {fmt.Println("GetTest Failed!")}}func main() {TestGetACat()}


在调用TestGetACat()函数中,我的想法是ICat应该为nil,然后调用fmt.Println("GetTest Failed!")。运行结果却是没有调用,这个顿时我就感觉有点迷惑了,然后直接加上ICat = nil却又是可以的,于是乎百度了一下。发现了一遍文章,地址:http://geek.csdn.net/news/detail/102187。

他的理解是这样的: ICat指向一个Tabby指针对象,该指针指向nil。所以ICat不为nil。

暂时只能够这么理解,记录下来




0 0