gpt4 book ai didi

go - golang 中的 nil 是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 13:00:47 24 4
gpt4 key购买 nike

在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

golang 编译器会抛出 can't use nil as type string in assignment 错误。

貌似nil只能用于struct和interface的指针。如果是这样,那么这是什么意思?以及当我们用它来和另一个对象进行比较时,它们是如何比较的,也就是说,golang如何判断一个对象为nil

编辑:例如,如果一个接口(interface)为 nil,则其类型和值必须同时为 nil。 golang 是怎么做到的?

最佳答案

在 Go 中,nil指针、接口(interface)、映射、 slice 、 channel 和函数类型的零值,表示 未初始化 值.

nil 并不意味着某些“未定义”状态,它本身就是一个适当的值。 Go 中的对象是 nil 当且仅当它的值是 nil 时,它只能是上述类型之一。

error 是一个接口(interface),因此 nil 是一个有效值,与 string 不同。出于显而易见的原因,nil 错误表示 没有错误

关于go - golang 中的 nil 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35983118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com