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

Dokumentacja mówi:Jakie jest zero dla napisu?

NewKey tworzy nowy klucz. rodzaj nie może być pusty. Jeden lub oba z stringID i intID muszą być zero. Jeśli oba są równe zero, klucz zwrócony jest niekompletny. rodzic musi być kompletnym kluczem lub zerowym.

Jakie jest zero dla napisu?

Próbowałem 0 i nil, i mam błędy jak:

cannot use nil as type string in function argument 

Odpowiedz

158

to "":

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

ciąg nie może być zerowa (ale *string może).

można po prostu przetestować

if stringId=="" { 

Aby przekazać ciąg zerowy w stringID użyć

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

Od the specification:

Kiedy pamięć jest alokowana do przechowywania wartości, albo poprzez deklarację lub wywołanie make lub new i bez exp dozwolona inicjalizacja , pamięć otrzymuje domyślną inicjalizację. Każdy element o takiej wartości jest ustawiony na wartość zerową dla jego typu: false dla wartości logicznych, 0 dla liczb całkowitych, 0,0 dla zmiennych, "" dla łańcuchów i zero dla wskaźników, funkcji, interfejsów, plasterków, kanałów i mapy.

+0

Prawo dystroy, robocza stwora. – DeanSinaean

+1

@DeanSinaean to powinno być oznaczone jako odpowiedź – dmportella

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

umieścić powyżej do skryptu, a następnie przejdź uruchom go.

Możesz uzyskać prawdziwą, domyślną wartością łańcucha golang jest "".

0

w tym przypadku ciąg pusty, lub użyć NewIncompleteKey()