Hi fellow Gophers I am trying to define an interface that satisfies addition (ultimate goal is to define a field <https://en.wikipedia.org/wiki/Field_(mathematics)>). However, I could get the following code to compile:
https://go.dev/play/p/zIwo1KW_Un0 no matter what approach I use (types Field0, Field1, Field2). The compiler error is of the pattern: ``` ./prog.go:29:22: *big.Rat does not satisfy Field0[any] (wrong type for method Add) have Add(*big.Rat, *big.Rat) *big.Rat want Add(any, any) any ``` I took the first approach from this recent post <https://go.dev/blog/generic-interfaces> on generics. If anyone could point to a correct way to make these kinds of self-referencing definitions would be much appreciated. Thanks ``` package main import ( "fmt" "math/big" ) type Field0[T any] interface { Add(T, T) T } type Field1[T any] interface { Add(Field1[T], Field1[T]) Field1[T] } type Field2 interface { Add(Field2, Field2) Field2 } type PolynomialTerm[K Field0[any]] struct { Coefficient K Monomial []byte } func main() { c := big.NewRat(0, 1) // This line doesn't compile no matter what Field we choose in PolynomialTerm's definition. t := PolynomialTerm[*big.Rat]{Coefficient: c} fmt.Println(t) } ``` -- 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 [email protected]. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/905e4f95-737f-48cb-bf9b-66e94e31e521n%40googlegroups.com.
