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  }