gpt4 book ai didi

go - 为什么数字 0 的 "nil"值为 0?

转载 作者:IT王子 更新时间:2023-10-29 01:16:38 24 4
gpt4 key购买 nike

字符串 "" 的 "nil"值对我来说有意义,但 0 是合法数字。例如,房间中的人数可以是0,但人名不能是""。这个约定背后的原因是什么?

(编辑)附加信息:

我想做的是有一种方法来测试是否为数字设置了值。将某人的名字设置为 "" 显然是不正确的,而将整数设置为零可能是合法的。在 go 中是否有解决此类事件的典型方法?

最佳答案

The "nil" value for a string "" makes sense to me but 0 is a legitimate number.

你的陈述有两个明显的问题:

  1. 不存在字符串的"nil"值
  2. "" 是完全合法的字符串。

您似乎混淆了 Go 的“零值”概念和 nil。这些概念几乎完全不相关。

  • 字符串的零值为 ""
  • 数字的零值为 0
  • 指针或接口(interface)的零值为nil。这是 nil 和“零值”真正相互关联的唯一地方。

在 Go 中,其他字符串、数字和其他具体类型永远不会是 nil。 (指向这些类型的指针可以,但这显然是不同的)。因此,谈论“字符串的零值”或“数字的零值”甚至没有意义。


作为对您编辑的回应,这个问题已经在各种情况下得到了回答。参见 here有关 JSON 解码的示例。不过,简而言之,您必须使用除数字/字符串类型以外的其他类型。使用指针或包装器类型(例如 sql.NullInt64 )。

关于go - 为什么数字 0 的 "nil"值为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46682878/

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