Sometimes, I use:
a := []int{ 1, 2, 3 }
b : = append([]int(nil), a...)

to copy a slice.

On Wednesday, August 16, 2017 at 12:31:13 PM UTC-7, Nate Finch wrote:
>
> Wrote it up as an issue: https://github.com/golang/go/issues/21482
>
> and I agree that using append to assign to a different variable than the 
> one in the append call is almost always going cause surprising behavior.... 
> but it's less clearly a mistake than append with only a single argument.
>
> On Wednesday, August 16, 2017 at 9:09:37 AM UTC-4, Val wrote:
>>
>> Agreed, append with only one argument doesn't look good and should be 
>> vetted.
>>
>> As a superset of this problem, any use of
>>   *a* = append(*b*, *c*)
>> with *b* != *a* (i.e. not assigning back to the same slice variable) 
>> looks either broken or cryptic me.
>> This holds whether *c* is zero or one or more variadic elements.
>> I mean, while there are a few usages where it is written on purpose, it 
>> makes reading and reasoning much more difficult.
>> Val
>>
>> On Wednesday, August 16, 2017 at 4:53:16 AM UTC+2, DrGo wrote:
>>>
>>> Hello,
>>>
>>> The following compiles as well as evades scrutiny by go Vet (and many a 
>>> human reviewer) resulting in perplexing bugs. What purpose calling append() 
>>> with only one argument serves? Shouldn't it be banned?
>>>
>>>
>>> ```
>>> var byteArray= []byte{'A', 'B',}
>>>
>>> func main() {
>>> buf:=[]byte {'C'}
>>> buf = append(byteArray)  //<--- gotche meant: buf = append(*buf*, 
>>> byteArray)
>>> fmt.Println(string(buf))
>>> }
>>> ```
>>> https://play.golang.org/p/jP8NGiEN9A
>>>
>>>

-- 
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