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

ドキュメントには次のように書かれています:

NewKey は新しいキーを作成します。種類を空にすることはできません。stringID と intID のいずれかまたは両方がゼロでなければなりません。両方がゼロの場合、返されるキーは不完全です。親は完全なキーまたは nil でなければなりません。

文字列のゼロは何ですか?

0とを試しnilましたが、次のようなエラーが発生しました。

cannot use nil as type string in function argument
4

2 に答える 2

229

それは""

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

文字列を nil にすることはできません (ただし、nil にする*stringことはできます)。

簡単にテストできます

if stringId=="" {

でゼロ文字列を渡すには、次stringIDを使用します。

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

仕様から:

宣言または make または new の呼び出しによって値を格納するためにメモリが割り当てられ、明示的な初期化が提供されていない場合、メモリにはデフォルトの初期化が与えられます。このような値の各要素は、その型のゼロ値に設定されます。ブール値の場合は false 、整数の場合は 0 、浮動小数点数の場合は 0.0 、文字列の場合は ""、ポインター、関数、インターフェイス、スライス、チャネル、およびマップの場合は nil です。

于 2012-10-03T06:51:33.430 に答える