On Saturday, July 2, 2016 at 6:19:56 AM UTC+2, Matt Harden wrote:
>
> Conceptually, the value of a string is the sequence of bytes it contains, 
> just like an array of bytes. It doesn't matter that the implementation of 
> strings looks more like a slice internally. On the other hand the value of 
> a slice is a reference to (part of) an underlying array, together with a 
> length. In all cases == should compare values. 
>

It does(*). But for a slice, it "also" compares the location of those 
values. That's the difference between a slice and an array. 

(*) : well, or rather, it probably should .
 

> I agree that it would be confusing to make == work for slices, because 
> many people, myself included would intuitively want that to compare the 
> contents of the slice (values from the underlying array) rather than the 
> value of the slice itself which is essentially 3 pointers.
>
> That's just a matter of realizing what a slice really is. I think It's 
more of a documentation issue to clear up the misconception. That should 
not impede the language from being improved.
 

> One nice feature of the current gc compiler AIUI is that it will avoid a 
> copy in some circumstances when you convert a byte slice to a string and 
> immediately use it as a map key. This helps with using []byte values to 
> index into maps, but doesn't help when the []byte is part of a larger 
> structure you want to use as a key. 
>

> On Fri, Jul 1, 2016 at 7:05 AM Chad <send...@gmail.com <javascript:>> 
> wrote:
>
>>
>>
>> On Friday, July 1, 2016 at 4:01:54 PM UTC+2, Chad wrote:
>>
>>>
>>>
>>> On Friday, July 1, 2016 at 3:44:10 PM UTC+2, Martin Geisler wrote:
>>>>
>>>> On Fri, Jul 1, 2016 at 12:52 PM, Chad <send...@gmail.com> wrote: 
>>>> > 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. 
>>>>
>>>> I keep seeing references (hah!) to this concept of a "reference type" 
>>>> :-) However, I just tried searching the language spec and Effective Go 
>>>> and there doesn't seem to be such a concept defined in those 
>>>> documents. 
>>>
>>>
>>> I think it should. It is mentioned here however 
>>> https://blog.golang.org/go-maps-in-action
>>>
>>> Without that, one of the first instinct of beginning programmers is 
>>> often to create pointers to slices ** *or maps ***
>>>
>>  
>> (And I should know, I did that :)
>>  
>>
>>>
>>>> -- 
>> 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...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

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