Что такое ноль для строки?

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

В документации говорится:

NewKey создает новый ключ. вид не может быть пустым. Один или оба параметра stringID и intID должны быть равны нулю . Если оба равны нулю, возвращенный ключ является неполным. parent должен быть либо полным ключом, либо нулем.

Что такое ноль для строки?

Я попробовал 0и nil, и у меня возникли такие ошибки, как:

cannot use nil as type string in function argument
DeanSinaean
источник

Ответы:

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 для чисел с плавающей запятой, "" для строк и nil для указателей, функций, интерфейсов, срезов, каналов и карт.

Денис Сегюре
источник
Простой тест для строки с нулевым значением и * строки: var s string; fmt.Println (s == "", * new (* string) == nil)
Tom J
0

в этом случае пустая строка, или вы можете использовать NewIncompleteKey ()

Нойпи Гилас
источник