However, that it's a valid point you raise (re strings)
But that's exactly the reason for which, someone would probably ask whether 
a string is a reference type or a value type.

This could probably made clearer in the documentation.

On Friday, July 1, 2016 at 12:48:28 PM UTC+2, Chad wrote:
>
> On Friday, July 1, 2016 at 12:11:43 PM UTC+2, Martin Geisler wrote:
>>
>> On Fri, Jul 1, 2016 at 3:15 AM, Chad <send...@gmail.com> wrote: 
>> > No, it's actually fine. You are comparing values. 
>> > 
>> > A slice being a struct under the hood, for slices you would compare the 
>> > structs (slice headers) 
>>
>> Yes, when you remember that a slice is a just a small struct with a 
>> pointer and some bookkeeping information (length, capacity), then you 
>> can compare two slices easily. So with 
>>
>>   a := []int{10, 20, 30} 
>>   b := a[:] 
>>
>> then a == b would be fast: simply compare the pointers and the 
>> bookkeeping information. Direct value equality between the structs 
>> gives you the expected and correct answer. 
>>
>> But what about 
>>
>>   []int{10, 20} == []int{10, 20} 
>>
>> where the two slices refer to different underlying arrays? I think you 
>> argue that this comparison should be false? 
>>
>  
> Yes. And it is. A slice is not an array. Or an open-ended array.
>
> I would hope that slices from different underlying arrays could be 
>> compared for equality based on their values, just like strings can. 
>> Two strings (that are not slices from the same original string) can be 
>> compared for equality just fine. I hope Go takes the shortcut when the 
>> strings refer to the same memory and otherwise does the slower 
>> per-byte comparison. The same could perhaps apply to slices in 
>> general. 
>>
>> strings are immutable. They are more akin to an array of bytes than a 
> slice of bytes.
>
>> -- 
>> Martin Geisler 
>>
>

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