2012-10-03 29 views
88
func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key 

Die Dokumentation sagt:Was ist die Null für eine Zeichenfolge?

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

Was ist die Null für eine Zeichenfolge?

versuchte ich 0 und nil, und ich habe Fehler wie:

cannot use nil as type string in function argument 

Antwort

158

Das "" ist:

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

Ein String nicht null sein kann (aber ein *string kann).

Sie können einfach testen

if stringId=="" { 

eine Null-Zeichenfolge in stringID verwenden

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

Von the specification weitergeben müssen:

Wenn der Speicher einen Wert speichern zugeordnet ist, entweder durch eine Erklärung oder einen Anruf von make oder neu, und keine exp legale Initialisierung wird zur Verfügung gestellt, der Speicher erhält eine Standardinitialisierung. Jedes Element eines solchen Werts wird für seinen Typ auf den Wert 0 gesetzt: false für boolesche Werte, 0 für Ganzzahlen, 0.0 für Gleitkommazahlen, "" für Strings und für Zeiger, Funktionen, Schnittstellen, Slices, Kanäle und Karten.

+0

Ihr Recht dystroy, funktioniert die Sache. – DeanSinaean

+1

@DeanSinaean sollte dies als die Antwort markiert werden – dmportella

4
var str string 
fmt.Println(str == "") 

oben in das Skript gesetzt, und es gehen laufen.

können Sie die wahre, Golang String Standardwert ist "".

0

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

Verwandte Themen