什么是string的零?
func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key
该文件说:
NewKey创build一个新的密钥。 种类不能为空。 stringID和intID中的一个或两个都必须为零 。 如果两者均为零,则返回的密钥不完整。 父母必须是完整的密钥或零。
什么是string的零?
我尝试了0
和nil
,我得到如下错误:
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()