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. On Thursday, June 30, 2016 at 4:54:59 PM UTC+2, Paul Borman wrote: > > It would be very surprising to people to use a slice as a key to map, say > []int{1,2} and then find that using another []int{1,2} does not find that > entry. While I think it would be nice to have == on slices, I must agree > with Ian and authors that it is better left unsaid. > > -Paul > > On Thu, Jun 30, 2016 at 1:09 AM, Chad <send...@gmail.com <javascript:>> > wrote: > >> >> >> On Thursday, June 30, 2016 at 8:32:58 AM UTC+2, Viktor Kojouharov wrote: >>> >>> This would probably introduce unnecessary confusion. People are used to >>> the equality operator comparing values in go, as opposed to references. >>> It's much better if the slices finally support the equality operator, even >>> though the comparison speed will depend on the number of items in the >>> slices. >>> >>>> >>>> Well, in fact, everything is a value in Go. It's just that the >> internal structure of the standard reference types are not exposed. >> The behaviour should not be very different from the comparison between >> user defined structs where one or more fields are pointers. >> >> It also makes sense to say that two slices are equal iff they represent >> the exact same views of the exact same underlying array. >> >> >> -- >> 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.