если карта содержит запись с ключом x, a [x] является элементом карты с ключом x, а тип [x] является типом элемента M
но
Индексное выражение на карте a типа map [K] V, используемое в назначении
или инициализация специальной формы
v, ok := a[x]
дает дополнительный
нетипизированное логическое значение.
Я все еще учусь Го. Является ли это «синтаксической функцией», которая встроена в язык и «просто работает, когда используется этот синтаксис», то есть вызовы v := a[x]
и v, ok := a[x]
представлены как различные типы узлов в AST, такие как MapGetAndCheckExistsNode(m, k, v, ok)
против MapGet(m, k, v)
? Или это реализовано с использованием "нормального" синтаксиса Go, и функция индексации каким-то образом знает, является ли его вывод "деструктурированным" или нет? Можно ли заставить индексное выражение возвращать кортеж или структуру с полями s.v
и s.ok
с использованием синтаксиса s := a[x]
?