Concepts are really not like Go-style interfaces Concepts is a generic type. The type is made concrete at compile time and you will never be able to distinguish behavior at runtime between you different types
If you want to have interfaces, you should probably use them instead using one nimble or the other. What your boilerplate does is that it declares a function that does nothing on any type, and let the compiler choose based on static types. It will not do what you want I believe. I'd like something like `iface` to be included in the standard library. There are good reasons to use interfaces in the standard library, in particular I like the way Go IO streams can be converted to various different interfaces at runtime and allows `io.Copy` to avoid shuffling the data too much around using kernel zero-copy syscalls. By the way I improved upon the yglukhov/iface in <https://github.com/mildred/iface>