Qual è lo zero per la stringa?


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

La documentazione dice:

NewKey crea una nuova chiave. kind non può essere vuoto. Uno o entrambi stringID e intID devono essere zero . Se entrambi sono zero, la chiave restituita è incompleta. genitore deve essere una chiave completa o nulla.

Qual è lo zero per la stringa?

Ho provato 0e nilho ricevuto errori come:

cannot use nil as type string in function argument

Risposte:


226

Questo è "":

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

Una stringa non può essere nulla (ma una *stringlattina).

Puoi semplicemente testare

if stringId=="" {

Per passare una stringa zero stringID, utilizzare

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

Dalla specifica :

Quando la memoria viene allocata per memorizzare un valore, tramite una dichiarazione o una chiamata di make o new, e non viene fornita l'inizializzazione esplicita, alla memoria viene fornita un'inizializzazione predefinita. Ogni elemento di tale valore è impostato sul valore zero per il suo tipo: false per booleani, 0 per numeri interi, 0,0 per float, "" per stringhe e zero per puntatori, funzioni, interfacce, sezioni, canali e mappe.


Un semplice test per una stringa di valore zero e * string: var s string; fmt.Println (s == "", * new (* string) == nil)
Tom J

0

in questo caso stringa vuota, oppure puoi usare NewIncompleteKey ()

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.