在golang中,有许多情况需要使用nil。例如:
func (u *URL) Parse(ref string) (*URL, error) {
refurl, err := Parse(ref)
if err != nil {
return nil, err
}
return u.ResolveReference(refurl), nil
}
但是我们不能像这样使用它:
var str string //or var str int
str = nil
在进行赋值操作时,如果使用了 nil
作为字符串类型,golang 编译器会报错 can't use nil as type string in assignment
。
看起来 nil
只能用于结构体和接口的指针。如果是这样的话,那么它是什么意思? 当我们将其与其他对象进行比较时,它们如何比较,换句话说,golang 如何确定一个对象是 nil?
编辑:例如,如果接口为 nil,则其类型和值必须同时为 nil。golang 如何实现这一点?
str == ""
即可。 - libertylocked