Pull to refresh

Comments 8

Перечитал ссылки по теме на глубину=3, но ни бенчмарков, ни хоть какого-то убедительного объяснения, что от этого улучшилось (кроме эстетичестких чувств - ну как так, функция немонотонная) так и не нашёл.

А зачем в го векторы называются срезами?

В Go есть массивы. Они жестко заданы по размеру. Срез - это указатель на массив, который может изменять свой размер и "бегать" своим начальным указателем по массиву в пределах нижележащего массива. Например на массив из 5 элементов можно создать срез [0:3] - элементы массива 0,1,2, но затем этот же срез переделать на [3,5] - элементы 3, 4. Но под срезом внутри всегда находится массив. Изменяя элемент среза мы изменяем элемент массива. Но в срез можно и добавить элементы, тогда автоматически создастся новый массив, в него скопируются элементы из старого массива и вернется новый указатель на новый массив, этим и занимается функция append.

Но в срез можно и добавить элементы, тогда автоматически создастся новый массив, в него скопируются элементы из старого массива и вернется новый указатель на новый массив, этим и занимается функция append.

Хорошо а чем это отличается от вектора во всех остальных языках то?

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

UFO just landed and posted this here

Спасибо за статью) раскидал своим ребятам.

За советы и побуждение к статье спасибо Артёму Башкирову:)

Sign up to leave a comment.

Articles