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


133
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

回答:


226

それは""

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

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

簡単にテストできます

if stringId=="" {

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

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

仕様から:

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


ゼロ値文字列と* stringの簡単なテスト:var s string; fmt.Println(s == ""、* new(* string)== nil)
トムJ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.