Quel est le zéro pour la chaîne?

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

La documentation dit:

NewKey crée une nouvelle clé. le genre ne peut pas être vide. L'un ou les deux de stringID et intID doit être égal à zéro . Si les deux sont égaux à zéro, la clé renvoyée est incomplète. parent doit être une clé complète ou nulle.

Quel est le zéro pour la chaîne?

J'ai essayé 0et nil, et j'ai eu des erreurs comme:

cannot use nil as type string in function argument
DeanSinaean
la source

Réponses:

226

C'est "":

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

Une chaîne ne peut pas être nulle (mais un *string canette).

Vous pouvez simplement tester

if stringId=="" {

Pour transmettre une chaîne nulle stringID, utilisez

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

De la spécification :

Lorsque la mémoire est allouée pour stocker une valeur, soit par une déclaration, soit par un appel de make ou new, et qu'aucune initialisation explicite n'est fournie, la mémoire reçoit une initialisation par défaut. Chaque élément d'une telle valeur est défini sur la valeur zéro pour son type: false pour les booléens, 0 pour les entiers, 0,0 pour les flottants, "" pour les chaînes et nil pour les pointeurs, les fonctions, les interfaces, les tranches, les canaux et les cartes.

Denys Séguret
la source
Un test simple pour une chaîne de valeur zéro et * string: var s string; fmt.Println (s == "", * new (* string) == nil)
Tom J
0

dans ce cas, chaîne vide, ou vous pouvez utiliser NewIncompleteKey ()

Noypi Gilas
la source