Comments 7
Картинка к «Передача (слайса) по ссылке» может запутать, так как после присвоения оба слайса становятся полностью независимыми play.golang.org/p/7_SqvjGKPDE
-1
Не становятся.
В вашем примере «независимыми» их делает append — который создаёт новый слайс на основе переданного и добавляемых элементов: play.golang.org/p/xI1nlgjKH4t
В вашем примере «независимыми» их делает append — который создаёт новый слайс на основе переданного и добавляемых элементов: play.golang.org/p/xI1nlgjKH4t
+1
Мне кажется срезы не совсем не правильно описано, что приведет в заблуждение новичков. Почитайте книгу Алана Долована «Язык программирования Go». Срез всегда ссылается «под капотом» на массив, по этому он всегда будет «ссылкой»(не указателем в go). Если вы расширяете срез и он больше чем массив «под капотом», то «под капотом» создастся новый массив требуемой длинны и срез теперь будет указывать на него. Но если срез будет уменьшаться, то массив не будет пересоздан, можно узнать так как вы показывали len и cap. На этом можно ловить баги.
Может я ошибаюсь или неправильно понял статью. Вот пример play.golang.org/p/ENpGACeRrFn
И можно сразу указывать длину массива, при создании среза, что бы потом не пересоздавать массивы — make([]int, 0, 10)
Может я ошибаюсь или неправильно понял статью. Вот пример play.golang.org/p/ENpGACeRrFn
И можно сразу указывать длину массива, при создании среза, что бы потом не пересоздавать массивы — make([]int, 0, 10)
+1
Sign up to leave a comment.
Полное руководство по массивам и срезам в Golang