web-dev-qa-db-ja.com

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

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

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

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

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

0nilを試しましたが、次のようなエラーが表示されました。

cannot use nil as type string in function argument
125
DeanSinaean

それは""です:

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 、チャネル、およびマップ。

215
Denys Séguret

この場合は空の文字列、またはNewIncompleteKey()を使用できます

0
Noypi Gilas