Есть много случаев использования ноль в Голанге. Например:
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
компилятор Голанга выбрасывает неиспользуемый can't use nil as type string in assignment
ошибке can't use nil as type string in assignment
.
Похоже, nil
можно использовать только для указателя структуры и интерфейса. Если это так, то что это значит? и когда мы используем его для сравнения с другим объектом, как они сравниваются, другими словами, как golang определяет, что один объект равен нулю?
РЕДАКТИРОВАТЬ: Например, если интерфейс равен нулю, его тип и значение должны быть равны нулю одновременно. Как Голанг делает это?