135
func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key

文档说:

NewKey 创建一个新密钥。种类不能为空。stringID 和 intID 之一或两者必须为零。如果两者都为零,则返回的密钥不完整。parent 必须是完整的密钥或 nil。

字符串的零是多少?

我试过0and nil,我得到了如下错误:

cannot use nil as type string in function argument
4

2 回答 2

229

那是""

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。

于 2012-10-03T06:51:33.430 回答
0

在这种情况下为空字符串,或者您可以使用 NewIncompleteKey()

于 2014-02-27T06:31:50.043 回答