On Wed, May 28, 2014 at 10:39 AM, John Meinel <[email protected]>wrote:

> The address of the real value is the same.
>
Are you referring to the backing array? That is not what is being compared,
so that's not a useful property.

> John
> =:->
> On May 28, 2014 6:04 AM, "Andrew Wilkins" <[email protected]>
> wrote:
>
>> On Wed, May 28, 2014 at 9:52 AM, Tim Penhey <[email protected]>wrote:
>>
>>> On 28/05/14 13:48, Andrew Wilkins wrote:
>>> > On Wed, May 28, 2014 at 8:47 AM, Tim Penhey <[email protected]
>>> > <mailto:[email protected]>> wrote:
>>> >
>>> >     On 28/05/14 12:43, Nate Finch wrote:
>>> >     > This sounds like one of those "if you have to ask this question,
>>> >     you're
>>> >     > doing something wrong".
>>> >     >
>>> >     > Can you give an example of where we need this?
>>> >
>>> >     Sure... let's say we have a stack of errors, for simplicity of the
>>> >     argument lets say it is a slice of error interface values.
>>> >
>>> >      stack []error
>>> >
>>> >      * an error is pushed on to the stack initially, we now have one
>>> error
>>> >      * the same error is pushed (or appended - I don't care)
>>> >      * we now have the same error twice
>>> >      * I push a new error on the stack, so it looks a little like this
>>> >        [err1, err1, err2] right?
>>> >
>>> >     Now iterating through this slice I want to know when the error
>>> changes.
>>> >
>>> >
>>> > Can you explain where equality fails?
>>>
>>> Equality fails when the interface is satisfied by a non-comparable value
>>> type, like a struct with a slice in it.
>>
>>
>> I see. In that case, I guess you'd have to use reflect.DeepEquals to
>> collapse arbitrary errors.
>>
>>  > I guess you're thinking you'd like to do something like "x is y" in
>>> > Python. There's no such thing as objects in Go, so no universal
>>> > definition of identity either.
>>>
>>> But an interface is effectively two pointers, one to the type and one to
>>> the thing that satisfies the interface.  Identity in that case is pretty
>>> simple.
>>>
>>
>> If the pointer is the same, which it won't be if you're storing a slice
>> in an interface; slices are wider than pointers.
>>
>> --
>> Juju-dev mailing list
>> [email protected]
>> Modify settings or unsubscribe at:
>> https://lists.ubuntu.com/mailman/listinfo/juju-dev
>>
>>
-- 
Juju-dev mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev

Reply via email to