字符串的零是什么?

139
func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key
文档说明:

NewKey创建一个新的key,kind不能为空。stringID和intID中的一个或两个必须为零。如果两者都为零,则返回的键不完整。父级必须是完整的键或nil。

stringID中的零是什么意思?

我尝试过0和nil,但我遇到了错误,例如:

<code><code>cannot use nil as type string in function argument
</code></code>
2个回答

231
那是空字符串:

That's "" :

var s string
fmt.Println(s=="") // prints "true"

字符串本身不能为 nil(但 *string 可以)。

你可以简单地进行测试。

if stringId=="" {

要传递一个零字符串到 stringID,使用

k := NewKey(c, "kind", "", 0, p)

根据规范

当通过声明或调用make或new来分配内存以存储值时,并且没有提供显式初始化,则该内存会被赋予默认初始化。这样的值的每个元素都设置为其类型的零值:布尔型为false,整数为0,浮点数为0.0,字符串为空字符串,指针、函数、接口、切片、通道和映射为nil。


一个简单的测试,用于检查零值字符串和*string:var s string; fmt.Println(s == "", *new(*string) == nil) - user12817546

0
在这种情况下,返回空字符串,或者您可以使用NewIncompleteKey()函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接