On Thursday, August 30, 2018 at 1:14:25 PM UTC-4, Jan Mercl wrote:
>
> On Thu, Aug 30, 2018, 18:57 Eric Raymond <e...@thyrsus.com <javascript:>> 
> wrote:
>
>> I'm trying to translate this to Go in a type-safe way. To do this, I need 
>> to be able to write two declarations: "Slice of pointers to objects 
>> satisfying the Event interface" 
>>
>
> []*Event, but quite probably []Event is what is really needed.
>
> and "map of string keys to pointers to objects satisfying the Event 
>> interface".  
>>
>
> map[string]*Event, but once again, my bet is on map[string]Event.
>
> My attempts so far have yielded very cryptic error messages and no success.
>>
>
> It would probably help your case if you could provide some self-contained 
> example reproducing the errors and post a link to the Go Playground.
>

That's hard.  The structures are intertwingled parts of ab only partly 
translated 14KLOC program  But I can isolate some key declarations.  If 
Event is my interface type, and I write

    events []Event
    _mark_to_object  map[string]*Event

as member declarations in the Repository class, and b is a pointer to a 
just-allocated instance of a Blob object satisfying the Event interface, 
and  I write this

 b.repo._mark_to_object[mark] = b

I get this message:

cannot use b (type *Blob) as type *Event in assignment:
*Event is pointer to interface, not interface

Note that the map values really do need to be pointers, because I need the 
map to refer to the mutable data in the event list, not a local copy of it 
in the map.  What's stumping me is how to communicate this to the compiler.

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