👆Объяснение к предыдущему вопросу
👨🏻💻 7: у вас нет адреса, так как массив это значение, которое само по себе должно быть записано в переменную, и только потом с ним можно работать => ошибка
8: здесь мы инициализируем слайс типа T со 2-м элементом == x (т.е. T{}), а потом в нулевой элемент получившегося слайса пишем значение y. Здесь всё ок, так как слайс это сложный тип, внутри работающий с указателем на массив. Именно во внутренний массив и будет записано значение y. Строка сама по себе бессмысленна, так как работать с результатом дальше нельзя. (но ошибки нет)
9: здесь мы создаем map с ключами типа int и элементами T, а дальше устанавливаем значение элемента с индексом 5 в значение y. Опять же map это сложный тип, который по факту указатель и поэтому мы можем работать со временно выделенной памятью. Опять же смысла нет, так как дальше результат использовать нельзя. (но ошибки нет)
11: здесь аналогично строке 8, но мы еще устанавливаем значение поля в 6. Проблем нет.
12: в map нельзя менять значение поля элемента, который там хранится не по ссылке (классический вопрос на Stack Overflow)
Golang задачи с собеседований
👨🏻💻 7: у вас нет адреса, так как массив это значение, которое само по себе должно быть записано в переменную, и только потом с ним можно работать => ошибка
8: здесь мы инициализируем слайс типа T со 2-м элементом == x (т.е. T{}), а потом в нулевой элемент получившегося слайса пишем значение y. Здесь всё ок, так как слайс это сложный тип, внутри работающий с указателем на массив. Именно во внутренний массив и будет записано значение y. Строка сама по себе бессмысленна, так как работать с результатом дальше нельзя. (но ошибки нет)
9: здесь мы создаем map с ключами типа int и элементами T, а дальше устанавливаем значение элемента с индексом 5 в значение y. Опять же map это сложный тип, который по факту указатель и поэтому мы можем работать со временно выделенной памятью. Опять же смысла нет, так как дальше результат использовать нельзя. (но ошибки нет)
11: здесь аналогично строке 8, но мы еще устанавливаем значение поля в 6. Проблем нет.
12: в map нельзя менять значение поля элемента, который там хранится не по ссылке (классический вопрос на Stack Overflow)
Golang задачи с собеседований
Что выведет код?
Anonymous Quiz
7%
{ID:1} {ID:1} {ID:1}
49%
{ID:3} {ID:3} {ID:3}
23%
{ID:1} {ID:2} {ID:3}
2%
{ID:3} {ID:2} {ID:1}
20%
нескомпилируется
👆Объяснение к предыдущему вопросу
👨🏻💻 Спецификация Golang гласит: Переменные, объявленные в инициализирующем операторе, переиспользуются в каждом цикле.
Из этого следует, что если мы используем адрес этой переменной, например для инициализации элементов Карты - все они будут иметь адрес указывающий на ячейку памяти с последним значением.
Golang задачи с собеседований
👨🏻💻 Спецификация Golang гласит: Переменные, объявленные в инициализирующем операторе, переиспользуются в каждом цикле.
Из этого следует, что если мы используем адрес этой переменной, например для инициализации элементов Карты - все они будут иметь адрес указывающий на ячейку памяти с последним значением.
Golang задачи с собеседований
Что выведет код?
Anonymous Quiz
33%
"write data" и "after write" в любом порядке
8%
только "write data" или "after write"
3%
только "write data"
56%
deadlock!
Как поведет себя следующая программа?
Anonymous Quiz
26%
не скомпилируется
64%
запуститься и выведет false
11%
запуститься и выведет true