package main import ( "bytes" "encoding/gob" "fmt" ) type Tags struct { Key *string Value *string } func main() { t1 := "" t2 := "test" i := Tags{Key: &t2, Value: &t1} s := []*Tags{&i} fmt.Printf("%#v\n", s) for _, x := range s { fmt.Printf("Orig %#v\n", *x) } buf := bytes.Buffer{} enc := gob.NewEncoder(&buf) dec := gob.NewDecoder(&buf) if err := enc.Encode(s); err != nil { fmt.Println(err) } var s2 []*Tags if err := dec.Decode(&s2); err != nil { fmt.Println(err) } fmt.Printf("%#v\n", s2) for _, x := range s2 { fmt.Printf("Transmitted %#v\n", *x) } }