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.