func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key
ドキュメントには次のように書かれています:
NewKeyは新しいキーを作成します。 kindは空にできません。 stringIDとintIDのいずれかまたは両方は、zeroでなければなりません。両方がゼロの場合、返されるキーは不完全です。 parentは完全なキーまたはnilでなければなりません。
文字列のゼロとは何ですか?
0
とnil
を試しましたが、次のようなエラーが表示されました。
cannot use nil as type string in function argument
それは""
です:
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 、チャネル、およびマップ。
この場合は空の文字列、またはNewIncompleteKey()を使用できます