On Thursday, August 30, 2018 at 1:14:25 PM UTC-4, Jan Mercl wrote:
>
> On Thu, Aug 30, 2018, 18:57 Eric Raymond <[email protected] <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 [email protected].
For more options, visit https://groups.google.com/d/optout.