老师,关于go允许调用nil指针的方法的问题;上面是和老师一样的代码,我尝试运行如下代码
var nilNode *treeNode nilNode.setValue(900) nilNode.print()
'Node is nil, ignored'被打印了,但是print函数在runtime时报错了:
panic: runtime error: invalid memory address or nil pointer dereference
如果我加上23-25的代码 编译器又不过说nil不能转为treeNode值。
而如果我如下这样判断的话,编译器过了,runtime还是报nil pointer的错
if &node == nil { return }
我想我对nil的理解和判断有问题,按照这个设计的话,函数接受者默认是可能为nil的,所以在runtime可以报错,那么在所有方法里都要做nil check?
而既然编译器允许调用nil.print()的值方法,如何在print方法内做检测呢?
看似不能直接理解为Swift里的nil和optional