On Thu, Aug 30, 2018 at 11:34 AM Eric Raymond <[email protected]> wrote:
>
>
>
> 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]> 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
If Event is your interface and EventImpl is your struct, what you need
is a map[string]Event, not map[string]*Event. Make sure you put
&EvenImpl{} to your slices and maps, not EventImpl{}
>
> 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.
--
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.