¿Cuál es el cero para la cadena?


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

La documentación dice:

NewKey crea una nueva clave. El tipo no puede estar vacío. Uno o ambos de stringID e intID deben ser cero . Si ambos son cero, la clave devuelta está incompleta. parent debe ser una clave completa o nula.

¿Cuál es el cero para la cadena?

Lo intenté 0y nilobtuve errores como:

cannot use nil as type string in function argument

Respuestas:


226

Eso es "":

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

Una cadena no puede ser nula (sino una *stringlata).

Simplemente puedes probar

if stringId=="" {

Para pasar una cadena cero stringID, use

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

De la especificación :

Cuando se asigna memoria para almacenar un valor, ya sea a través de una declaración o una llamada de make o new, y no se proporciona una inicialización explícita, la memoria recibe una inicialización predeterminada. Cada elemento de dicho valor se establece en el valor cero para su tipo: falso para booleanos, 0 para enteros, 0.0 para flotantes, "" para cadenas y nulo para punteros, funciones, interfaces, sectores, canales y mapas.


Una prueba simple para una cadena de valor cero y * cadena: var s cadena; fmt.Println (s == "", * new (* string) == nil)
Tom J

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.