1. ホーム
  2. string

[解決済み] 文字列の0は何ですか?

2022-06-23 11:03:46

質問

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

ドキュメントには :

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

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

試しに 0nil のようなエラーが出ました。

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の呼び出しによって、値を格納するためにメモリが割り当てられ、明示的な初期化が行われない場合 が提供されていない場合、メモリにはデフォルトの初期化が与えられます。そのような値の各 そのような値の各要素には、その型に対応するゼロ値が設定されます。 は論理値、0は整数値、0.0は浮動小数点数です。 文字列は"" となります。 そしてnil はポインタ、関数、インタフェース、スライス、チャネル、マップに対応します。