On Tue, Jan 19, 2021 at 7:06 PM burak serdar <bser...@computer.org> wrote: > > In the following program, it is valid to pass an interface to function P: > > func P[T fmt.Stringer](x T) { > fmt.Println(x) > } > > func main() { > var v fmt.Stringer > P(v) > } > > However, there is no way for P to check if x is nil. This does not compile: > > func P[T fmt.Stringer](x T) { > if x!=nil { > fmt.Println(x) > } > } > > Is it possible to write a generic function that can test if its > argument with a constraint is nil?
For an interface type the value "nil" is the zero value of the type, so this is the general zero value issue mentioned at https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md#the-zero-value You can write func P[T fmt.Stringer](x T) { var zero T if x!=zero { fmt.Println(x) } } Ian -- 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/CAOyqgcUyu6ik0J7zURT5xLLm_s7TmEszXJUkuKvDKCrbeeeRaA%40mail.gmail.com.