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

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

Ответ 1

Что "":

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

Строка не может быть nil (но a *string can).

Вы можете просто протестировать

if stringId=="" {

Чтобы передать нулевую строку в stringID, используйте

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

Из спецификации:

Когда память выделяется для хранения значения, либо через объявление или вызов make или новый, и явная инициализация, память получает инициализацию по умолчанию. каждый элемент такого значения устанавливается равным нулю для своего типа: false для booleans, 0 для целых чисел, 0.0 для float, "" для строк и nil для указателей, функций, интерфейсов, срезов, каналов и карт.

Ответ 2

var str string
fmt.Println(str == "")

поставьте выше в свой script и запустите его.

вы можете получить значение true, значение golang string по умолчанию равно "".

Ответ 3

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