Was ist die Null für Zeichenfolge?

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

Die Dokumentation sagt:

NewKey erstellt einen neuen Schlüssel. Art kann nicht leer sein. Entweder eine oder beide von stringID und intID müssen Null sein . Wenn beide Null sind, ist der zurückgegebene Schlüssel unvollständig. Eltern müssen entweder ein vollständiger Schlüssel oder Null sein.

Was ist die Null für Zeichenfolge?

Ich habe versucht 0und nil, und ich habe Fehler wie:

cannot use nil as type string in function argument
DeanSinaean
quelle

Antworten:

225

Das ist "":

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

Ein String kann nicht Null sein (sondern eine *stringDose).

Sie können einfach testen

if stringId=="" {

stringIDVerwenden Sie zum Übergeben einer Nullzeichenfolge

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

Aus der Spezifikation :

Wenn Speicher zum Speichern eines Werts zugewiesen wird, entweder durch eine Deklaration oder einen Aufruf von make oder new, und keine explizite Initialisierung bereitgestellt wird, erhält der Speicher eine Standardinitialisierung. Jedes Element eines solchen Werts wird für seinen Typ auf den Wert Null gesetzt: false für Boolesche Werte, 0 für Ganzzahlen, 0.0 für Gleitkommazahlen, "" für Zeichenfolgen und null für Zeiger, Funktionen, Schnittstellen, Slices, Kanäle und Maps.

Denys Séguret
quelle
Ein einfacher Test für eine Nullwertzeichenfolge und eine * Zeichenfolge: var s string; fmt.Println (s == "", * new (* string) == nil)
Tom J
0

in diesem Fall leere Zeichenfolge, oder Sie können NewIncompleteKey () verwenden

Noypi Gilas
quelle