4 ms·
Or even better, proper sum types. They're a superset of enums anyway. https://github.com/BurntSushi/go-sumtype https://github.com/BurntSushi/go-sumtype is grea
by lucian1900 5y ago
Or even better, proper sum types. They're a superset of enums anyway.
https://github.com/BurntSushi/go-sumtype https://github.com/BurntSushi/go-sumtype is great, but a bit unwieldy. Language support would be much better.
- catlifeonmars 5y agoProper compile time sum types would be great. I find myself reimplementing sum types at runtime far too often, especially when it comes to parsing JSON. My go to is a function with a signature along the lines of the reflect packages dynamic select: func UnmarshalOneOf(data []byte, args []interface{}) (index int, err error) Which I use like this: variants := []interface{}{ &T1{}, &T2{}} i, err := UnmarshalOneOf(data, variants) // … return variants[i]