On 28/05/14 13:48, Andrew Wilkins wrote:
> On Wed, May 28, 2014 at 8:47 AM, Tim Penhey <tim.pen...@canonical.com
> <mailto:tim.pen...@canonical.com>> 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 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.

Tim

-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev

Reply via email to