This position precludes the following use of the equality operator for
scalar values:

a := 1
b := 1

a == b would be false under the approach below since a and b are not the
same set of bits.

I think most people would find this a little surprising.

On Thu, 2016-06-30 at 09:24 -0700, Chad wrote:
> It's a view in another array.
> Why should they be equal? Unless the second slice is constructed by 
> subslicing the other as such `[:]`, the slices *are* different.
> 
> If I were to access one of the slice backing array and mutate it, I 
> wouldn't expect the slices to be equal anymore.
> 
> The argument that it would be surprising is perhaps flawed because it stems 
> from a misconception.
> A slice is a dynamic view. For two slices to be equal it makes sense to be 
> looking at the same thing at all time.
> 
> Taken mathematically, if we describe an indirection as a mathematical 
> function, a slice is such a function. Two functions are equals if they are 
> equals everywhere they are defined. A slice is equal to another slice if 
> the backign arrays always have the same values, whatever mutation occurs on 
> any of them.
> 
> Comparing the snapshot view of a slice would then different. The behaviour 
> seems consistent to me.


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