Qual é o zero da string?

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

A documentação diz:

NewKey cria uma nova chave. tipo não pode estar vazio. Um ou ambos de stringID e intID devem ser zero . Se ambos forem zero, a chave retornada está incompleta. pai ou mãe deve ser uma chave completa ou nula.

Qual é o zero da string?

Eu tentei 0e nilobtive erros como:

cannot use nil as type string in function argument
DeanSinaean
fonte

Respostas:

226

Isso é "":

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

Uma string não pode ser nula (mas *stringpode).

Você pode simplesmente testar

if stringId=="" {

Para passar uma string zero stringID, use

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

A partir da especificação :

Quando a memória é alocada para armazenar um valor, por meio de uma declaração ou uma chamada de marca ou nova, e nenhuma inicialização explícita é fornecida, a memória recebe uma inicialização padrão. Cada elemento desse valor é definido com o valor zero para seu tipo: false para booleanos, 0 para números inteiros, 0,0 para números flutuantes "" para seqüências de caracteres e nulo para ponteiros, funções, interfaces, fatias, canais e mapas.

Denys Séguret
fonte
Um teste simples para uma cadeia de valor zero e * string: var s string; fmt.Println (s == "", * new (* string) == nil)
Tom J
0

nesse caso, sequência vazia, ou você pode usar NewIncompleteKey ()

Noypi Gilas
fonte