当前位置: 首页 > 面试题库 >

nil在golang中是什么意思?

柯浩壤
2023-03-14
问题内容

很多情况下在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,则其类型和值必须同时为nil。 golang如何做到这一点?


问题答案:

在Go中,nil指针,接口,映射,切片,通道和函数类型零值 ,表示 未初始化的 值。

nil并不意味着某种“未定义”状态,它本身就是一个适当的值。Go中的对象nil仅当且仅当其值为is时nil,才可以是上述类型之一。

error与接口不同,an 是一个接口,nil一个有效值也是如此string。出于明显的原因,nil错误代表 没有错误



 类似资料:
  • 问题内容: 看到这个游乐场:http : //play.golang.org/p/nWHmlw1W01 为什么两个函数的输出不同? 问题答案: 诚然,这有点古怪,但是有一个解释。 想象一个变量是由两个字段组成的结构:一个是类型,另一个是数据。(和)。实际上,它看起来就像Go运行时中的样子。 当您将nil slice传递给时,只会将其作为值传递,因此您的比较可简化为。 同时,调用会自动将您的变量包装

  • 问题内容: 我已经看到了声明,接口和类 这是什么意思? 问题答案: 没有证据,我相信您在谈论Java的泛型支持… 泛型允许您抽象类型 在Java 5之前,很难提供能够支持多种不同类型的Objects的类而不必为每种特定情况编写代码,因此人们通常会这样做。 这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否有可能将给定的Object强制转换为可用类型…例如 现在,这已经很明显了,但是如

  • 问题内容: 什么是在这个CSS规则是什么意思? 问题答案: 是相邻的同级组合器。 这意味着选择只选择自带 之后 的。 插图: 选择了什么,没有选择什么: 选择 这个来之后第一。 未选择 这出现在第一后而不是在。由于它不会立即跟随,因此未选中。 但是,由于它仍然紧随元素之后,选择器不会立即匹配此元素,而是将使用通用的同级组合器来匹配该元素。 未选择 这位于内,并且在引号内没有满足其选择器的内容。

  • 问题内容: 我想知道 = + _ 运算符在JavaScript中的含义。看起来像是在做作业。 例: 问题答案: r = +_; 尝试将任何内容强制转换为数字。 只是一个变量名(不是运算符),可以是,等等。 例: 将“ 1”强制转换为纯数字1。 现在,不是。 此外,根据算术运算符的MDN页面: 一元加号运算符位于其操作数之前,并求值为其操作数,但是 尝试将其转换为数字(如果尚未转换为数字) 。 […

  • 问题内容: 嗨,我遇到了以下代码 这到底是怎么回事?我不确定“&”在做什么。 问题答案: 回答 该符号是按位与运算符。与1一起使用时,基本上会屏蔽该值以提取最低位,换句话说,它将告诉您该值是偶数还是奇数。 有关Python运算符的更多信息 有关更多信息,请参见:http : //wiki.python.org/moin/BitwiseOperators 为什么检查奇数与偶数比较有效 编辑:添加此部

  • 问题内容: 例如,我知道SELECT * FROM example_table; 方法。但是,不知道代码的每个部分意味着什么,我感到不舒服。我只是一个初学者,所以你们能帮我吗。非常感谢。 问题答案: 我通过分隔代码的每个部分为您提供答案。 SELECT ==它命令计算机包括或从数据库名称(表)中选择每个内容。 (*)==表示所有{这里的代码表示包括数据库中的所有内容。} FROM ==它是指我们必