Упрощение синтаксиса инициализации переменных go

В приведенном ниже коде:

var v1 []string = []string{"1"}
var v2 map[string][]string = map[string][]string{"a": []string{"1"}}

Второй можно упростить следующим образом:

var v2 map[string][]string = map[string][]string{"a": {"1"}}

В то время как первое не может быть записано как:

var v1 []string = {"1"}

Я не знаю, в какой версии в Go добавлен этот упрощенный синтаксис, и где его можно использовать, почему []string нельзя упростить?

Потому что так написано в спецификации языка. «Почему?» основывается на мнении.

Volker 13.02.2023 07:32

Первый можно упростить как var v1 = []string{"1"}

Erwin Bolwidt 13.02.2023 09:12

Обратите внимание, что вам не нужно повторять тип слева: var v1 = []string{"1"}. Аналогично для карты (или любого другого сложного типа, если на то пошло).

Peter 13.02.2023 11:19
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
3
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Https://go.dev/ref/spec#Composite_literals говорит:

Внутри составного литерала массива, среза или типа карты T элементы или ключи карты, которые сами являются составными литералами, могут опускать соответствующий тип литерала, если он идентичен элементу или типу ключа T.

Связанный: Создание массива литерала массива в Golang

Другие вопросы по теме