Size: a a a

2020 April 26

АП

Александр Попов... in Go-go!
Локоть Анатолий
Он не ссылочный - слайс это структура, со своими лен и капасити. Общая у них ссылка на массив, но массив как я выше написал, лёгким движением руки копируется при аппенде и вуаля слайсы уже содержат ссылки на разные массивы
интересно можно ли заставить не копировать...
источник

ЛА

Локоть Анатолий... in Go-go!
Александр Попов
интересно можно ли заставить не копировать...
Если капасити не растет - не копируется
источник

ЛА

Локоть Анатолий... in Go-go!
Те если изначальнный слацс сделан с капасити 3, и вы аппендите 3 элемента - не будет новых аллокаций
источник

АП

Александр Попов... in Go-go!
ну так я поставил капипаси большое - с чего оно расти то будет?
источник

zl

ziggy lucid in Go-go!
Локоть Анатолий
Если капасити не растет - не копируется
а такие потерянные в слайсах блоки памяти сборщик мусора вообще подбирает?
источник

АП

Александр Попов... in Go-go!
источник

RS

Roman Sharkov in Go-go!
Александр Попов
но тогда типо он должен быть заполнен при s := make([]int, 0, 10)
https://play.golang.org/p/PwKY_M4QvsX

тут срез s просто указывает на range 0:0
если указать ему 0:5 то всё будет норм
источник

а

а кто это in Go-go!
Локоть Анатолий
Если капасити не растет - не копируется
источник

ЛА

Локоть Анатолий... in Go-go!
ziggy lucid
а такие потерянные в слайсах блоки памяти сборщик мусора вообще подбирает?
Сборщик подбирает массивы, на которые не ссылается никакой слайс
источник

АП

Александр Попов... in Go-go!
Roman Sharkov
https://play.golang.org/p/PwKY_M4QvsX

тут срез s просто указывает на range 0:0
если указать ему 0:5 то всё будет норм
и что за 0:0?
источник

RS

Roman Sharkov in Go-go!
range от 0 до 0 элемента
источник

zl

ziggy lucid in Go-go!
Александр Попов
интересно можно ли заставить не копировать...
можно, передавая внутрь функции не слайс, а указатель на него
источник

АП

Александр Попов... in Go-go!
ziggy lucid
можно, передавая внутрь функции не слайс, а указатель на него
так не интересно
источник

АП

Александр Попов... in Go-go!
Roman Sharkov
range от 0 до 0 элемента
эм? там же нет никаких range
источник

zl

ziggy lucid in Go-go!
все равно, на мой взгляд, такое поведение слайсов немного нелогично
источник

RS

Roman Sharkov in Go-go!
ziggy lucid
а такие потерянные в слайсах блоки памяти сборщик мусора вообще подбирает?
не знаком с внутренним устройством GC Go 1.14, но предполагаю что массив существует в памяти целиком до момента пока GC не докажет что на него больше никто не ссылается. Иначе может произойти segfault в случае, если мы сделаем нечто подобное: https://play.golang.org/p/PwKY_M4QvsX
источник

а

а кто это in Go-go!
Александр Попов
эм? там же нет никаких range
https://play.golang.org/p/ccMS8vsEiPh
вот твой пример
источник

RS

Roman Sharkov in Go-go!
Александр Попов
эм? там же нет никаких range
срез на то и срез что указывает на определённый range массива
источник

АП

Александр Попов... in Go-go!
мне кажется он range сохранит при копировании - не?
источник

RS

Roman Sharkov in Go-go!
Александр Попов
мне кажется он range сохранит при копировании - не?
конечно сохранит
источник