Що таке нуль для рядка?


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

Документація говорить:

NewKey створює новий ключ. вид не може бути порожнім. Або один, або обидва stringID та intID повинні бути нульовими . Якщо обоє дорівнюють нулю, повернутий ключ є неповним. батьків повинен бути або повним ключем, або нулем.

Що таке нуль для рядка?

Я спробував 0і nil, і я отримав помилки як:

cannot use nil as type string in function argument

Відповіді:


226

Ось "":

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

Рядок не може бути нульовим (але *stringможе бути).

Можна просто протестувати

if stringId=="" {

Щоб передати нульовий рядок stringID, використовуйте

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

З специфікації :

Коли пам'ять виділяється для зберігання значення або через декларацію, або за викликом make або new, і явна ініціалізація не передбачена, пам'яті надається ініціалізація за замовчуванням. Кожному елементу такого значення встановлено нульове значення для його типу: false для булевих значень, 0 для цілих чисел, 0,0 для плавців, "" для рядків та нуль для покажчиків, функцій, інтерфейсів, фрагментів, каналів та карт.


Простий тест рядка з нульовим значенням і * string: var s string; fmt.Println (s == "", * new (* string) == nil)
Том J

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.