3 ms·
Your understanding is incorrect, too. append() only returns a new slice when "the capacity of s is not large enough to fit the additional values", in which case
by tshadwell 11y ago
Your understanding is incorrect, too. append() only returns a new slice when "the capacity of s is not large enough to fit the additional values", in which case "append allocates a new, sufficiently large underlying array that fits both the existing slice elements and the additional values. Otherwise, append re-uses the underlying array."
[-] http://golang.org/ref/spec#Appending_and_copying_slices http://golang.org/ref/spec#Appending_and_copying_slices
- a-nom-a-ly 11y agoYou seem to be confusing `array` with `slice`. AFAIK, append always returns a new slice. How could it not, when everything is copy/pass by value? A slice is essentially a struct with fields for len, cap and a pointer to an array.
- skj 11y agoNo, nicksardo's understanding was quite correct. Slices are values, and it is impossible to return the same one, because value semantics don't work like that. The slice returned only points to a new array when the capacity is not large enough to fit additional values.