我无法理解如何正确确保nil在这种情况下不是:
package main
type shower interface {
getWater() []shower
}
type display struct {
SubDisplay *display
}
func (d display) getWater() []shower {
return []shower{display{}, d.SubDisplay}
}
func main() {
// SubDisplay will be initialized with null
s := display{}
// water := []shower{nil}
water := s.getWater()
for _, x := range water {
if x == nil {
panic("everything ok, nil found")
}
//first iteration display{} is not nil and will
//therefore work, on the second iteration
//x is nil, and getWater panics.
x.getWater()
}
}
我发现检查该值是否实际的唯一方法nil是使用反射。
这真的是想要的行为吗?或者我没有在我的代码中看到一些重大错误?
倚天杖
qq_笑_17
小怪兽爱吃肉
相关分类