Field1 and Field2 are unused in your example. What is the purpose?

On Dec 25, 2025, at 3:59 AM, 'Axel Wagner' via golang-nuts <[email protected]> wrote:


On Thu, 25 Dec 2025 at 10:03, [email protected] <[email protected]> wrote:
Hi fellow Gophers

I am trying to define an interface that satisfies addition (ultimate goal is to define a field).
However, I could get the following code to compile:


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 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.

--
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/CAEkBMfFiayZh_3RcbU0iCTsJ3AFNGeykV4MqRKKm%2B%3D2%2BbymBPw%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 [email protected].
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/A2907C69-3A05-4107-AE18-3E0F21D9E5B7%40me.com.

Reply via email to