main.go 365 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package main
  2. import "fmt"
  3. type Inf interface {
  4. Set(int)
  5. }
  6. type A struct {
  7. num int
  8. }
  9. func (a *A) Set(data int) {
  10. a.num = data
  11. }
  12. type B struct {
  13. num int
  14. }
  15. func (b *B) Set(data int) {
  16. b.num = data
  17. }
  18. type C interface {
  19. *A | *B
  20. Inf
  21. }
  22. type D[T C] struct {
  23. data T
  24. }
  25. func main() {
  26. d := D[*B]{
  27. data: &B{},
  28. }
  29. d.data.Set(10)
  30. fmt.Println(d.data.num)
  31. }