One way is https://github.com/golang/go/issues/26842 which is to provide some mechanism to compare any value with its type's zero value (either with a universal zero value or something like isZero(v)). That removes all the special cases so you could use it even without any constraints
On Tue, Jun 23, 2020 at 1:02 AM roger peppe <rogpe...@gmail.com> wrote: > > FWIW I also came across this issue recently in a different context and > similarly wondered if a nillable constraint might be a good idea. > > There is a kinda workaround although you won't like it :) > > https://go2goplay.golang.org/p/-nDAUVYWuxo > > > > On Tue, 23 Jun 2020 at 05:43, 'Bryan C. Mills' via golang-nuts > <golang-nuts@googlegroups.com> wrote: >> >> I tried writing a generic “FirstNonNil” function, but got stuck at the "== >> nil" part. >> >> First I thought to maybe add a type list enumerating all of the nillable >> types, but I don't have a way to enumerate all of the possible interface >> types as part of that list, and there is no constraint for “any interface >> type”. >> >> Then I thought I could use a `var zero T` variable and compare `== zero` >> instead of `== nil`. But that doesn't work either: I need the `comparable` >> constraint to get `==`, but not every nillable type is comparable with an >> arbitrary variable (slices, maps, and functions are not). >> >> So it seems that the best I can do is to write a generic `First` function >> and make the caller write out `func (x T) bool { return x != nil }` >> explicitly at every call site. Did I miss a better option? >> >> -- >> 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. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/CAKWVi_SED7FvqerjhzX8OBss3MHzbb3aw%2BLOcRcC3Lf3GUZCfw%40mail.gmail.com. > > -- > 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. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/CAJhgacirMen54vZw7SnUHvM2DtADm9fnjF3dMziATnC4WvcmaQ%40mail.gmail.com. -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CANG3jXLswfnz3eBVak6OjZhYdWqWvQf7p7aA2Eg_K%2B9%3DF_DSuw%40mail.gmail.com.