func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key
La documentation dit:
NewKey crée une nouvelle clé. genre ne peut pas être vide. L'un ou les deux stringID et intID doivent être zéro . Si les deux sont égaux à zéro, la clé retourné est incomplet. le parent doit être soit une clé complète, soit nil.
Quel est le zéro pour la chaîne?
J'ai essayé 0
et nil
, et j'ai eu des erreurs comme:
cannot use nil as type string in function argument
C'est ""
:
var s string
fmt.Println(s=="") // prints "true"
Une chaîne ne peut être nulle (mais un *string
peut).
Vous pouvez simplement tester
if stringId=="" {
Pour passer une chaîne nulle dans stringID
, utilisez
k := NewKey(c, "kind", "", 0, p)
Lorsque la mémoire est allouée pour stocker une valeur, via un fichier déclaration ou un appel de make ou new, et pas d'initialisation explicite est fournie, la mémoire reçoit une initialisation par défaut. Chaque L'é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.
dans ce cas, chaîne vide ou vous pouvez utiliser NewIncompleteKey ()