Apa nol untuk string?

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

Dokumentasi mengatakan:

NewKey menciptakan kunci baru. jenis tidak boleh kosong. Salah satu atau keduanya dari stringID dan intID harus nol . Jika keduanya nol, kunci yang dikembalikan tidak lengkap. orang tua harus berupa kunci lengkap atau nihil.

Apa nol untuk string?

Saya mencoba 0dan nil, dan saya mendapat kesalahan seperti:

cannot use nil as type string in function argument
DeanSean
sumber

Jawaban:

226

Itu "":

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

String tidak boleh nol (tapi *stringbisa).

Anda cukup menguji

if stringId=="" {

Untuk memasukkan string nol stringID, gunakan

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

Dari spesifikasi :

Ketika memori dialokasikan untuk menyimpan nilai, baik melalui deklarasi atau panggilan make atau baru, dan tidak ada inisialisasi eksplisit disediakan, memori diberikan inisialisasi default. Setiap elemen dari nilai tersebut diatur ke nilai nol untuk jenisnya: false untuk boolean, 0 untuk bilangan bulat, "0 untuk pelampung, " "untuk string , dan nol untuk pointer, fungsi, antarmuka, irisan, saluran, dan peta.

Denys Séguret
sumber
Tes sederhana untuk string nilai nol dan * string: var s string; fmt.Println (s == "", * new (* string) == nil)
Tom J
0

dalam hal ini string kosong, atau Anda dapat menggunakan NewIncompleteKey ()

Noypi Gilas
sumber