On Tue, Sep 20, 2016, at 03:23 PM, Gabriel Adumitrachioaiei wrote:
> I don't understand something when I want to pop out first element of a
> slice and use it.
> Here is my version:
>
> s := []int{1,2,3} first := s[] s = s[1:]
>
>
> Here is a version that I saw in the standard library:
> https://golang.org/src/database/sql/sql.go#L791
>
> first := s[] copy(s, s[1:]) s = s[:len(s) - 1]
>
>
> I wonder, why do we need to translate the other elements to the left
> with a copy ?
> In the first case, I guess the first element will still be found in
> the underlying array, and in the second case the last element.
> It's not like for avoiding a memory leak, because neither version
> allocates a new underlying array.

 If you append to the slice in the second version then the new element
 will reuse the space at the end of the backing array. In the first
 version Go may have to allocate to expand the backing array since there
 is no spare capacity.

Ian

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to