github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/talks/2013/bestpractices/shortercode2.go (about) 1 // +build OMIT 2 3 package main 4 5 import ( 6 "encoding/binary" 7 "io" 8 "log" 9 "os" 10 ) 11 12 type Gopher struct { 13 Name string 14 AgeYears int 15 } 16 17 func (g *Gopher) WriteTo(w io.Writer) (size int64, err error) { 18 err = binary.Write(w, binary.LittleEndian, int32(len(g.Name))) 19 if err != nil { 20 return 21 } 22 size += 4 23 n, err := w.Write([]byte(g.Name)) 24 size += int64(n) 25 if err != nil { 26 return 27 } 28 err = binary.Write(w, binary.LittleEndian, int64(g.AgeYears)) 29 if err == nil { 30 size += 4 31 } 32 return 33 } 34 35 func main() { 36 g := &Gopher{ 37 Name: "Gophertiti", 38 AgeYears: 3382, 39 } 40 41 if _, err := g.WriteTo(os.Stdout); err != nil { 42 log.Printf("DumpBinary: %v\n", err) 43 } 44 }