Что важно знать
- Срез — указатель, длина, ёмкость.
appendможет вернуть новый массив — результат обязательно присваивать.- Порядок обхода мапы случаен; мапа не потокобезопасна.
- Строка — байты, руна — символ Unicode.
Устройство среза, append и общий массив, мапы, строки и руны.
append может вернуть новый массив — результат обязательно присваивать.Практика. Решить 10 задач «что выведет код» на срезы и append.
Практика. Найти и исправить ошибки с общим массивом в учебном коде обработки срезов.
Срезы, полученные друг из друга, делят базовый массив, пока append не перевыделил его. Если у исходного среза есть свободная ёмкость, append к подсрезу перезапишет элементы…
Массив [5]int — значение фиксированного размера, размер — часть типа ([3]int и [4]int — разные типы); присваивание и передача копируют все элементы. Срез []int — дескриптор над…
new(T) выделяет нулевое значение любого типа и возвращает указатель T. make — только для срезов, мап и каналов: инициализирует их внутреннюю структуру и возвращает само значение…
map — хеш-таблица: вставка, поиск и удаление в среднем O(1). Порядок обхода случаен и намеренно перемешивается от запуска к запуску. Конкурентная запись из нескольких горутин …
nil-срез (var s []int) и пустой ([]int{}) оба имеют len 0, с обоими работают range и append. Различие — только s == nil и JSON: nil кодируется как null, пустой — как []. nil-map…
Срез — дескриптор из трёх полей: указатель на базовый массив, длина (len — сколько элементов доступно) и ёмкость (cap — сколько поместится до конца массива). append пишет в тот же…
На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.