Source file
test/typeparam/issue47713.go
1
2
3
4
5
6
7 package main
8
9 import (
10 "encoding"
11 "fmt"
12 )
13
14 type Seralizable interface {
15 encoding.BinaryMarshaler
16 encoding.BinaryUnmarshaler
17 }
18
19 type SerDeString string
20
21 func (s *SerDeString) UnmarshalBinary(in []byte) error {
22 *s = SerDeString(in)
23 return nil
24 }
25
26 func (s SerDeString) MarshalBinary() ([]byte, error) {
27 return []byte(s), nil
28 }
29
30
31 type GenericSerializable[T Seralizable] struct {
32 Key string
33 Value T
34 }
35
36 func (g GenericSerializable[T]) Send() {
37 out, err := g.Value.MarshalBinary()
38 if err != nil {
39 panic("bad")
40 }
41 var newval SerDeString
42 newval.UnmarshalBinary(out)
43 fmt.Printf("Sent %s\n", newval)
44 }
45
46 func main() {
47 val := SerDeString("asdf")
48 x := GenericSerializable[*SerDeString]{
49 Value: &val,
50 }
51 x.Send()
52 }
53
View as plain text