什么是string的零?

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

该文件说:

NewKey创build一个新的密钥。 种类不能为空。 stringID和intID中的一个或两个都必须为零 。 如果两者均为零,则返回的密钥不完整。 父母必须是完整的密钥或零。

什么是string的零?

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

 cannot use nil as type string in function argument 

那是""

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

一个string不能是零(但是一个*string可以)。

你可以简单地testing

 if stringId=="" { 

要在stringID传递一个零string,请使用

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

从规格 :

当分配内存来存储一个值时,无论是通过声明还是调用make或new,并且不提供显式的初始化,内存都被赋予一个默认的初始化。 这样一个值的每个元素的types设置为零值:布尔值为false,整数为0,浮点数为0.0, string“” ,指针,函数,接口,片,通道和映射为零。

 var str string fmt.Println(str == "") 

把上面的脚本放到你的脚本中,然后运行它。

你可以得到true,golang的string默认值是“”。

在这种情况下为空string,或者可以使用NewIncompleteKey()