Exercise: Stringers
package main import "fmt" type IPAddr [4]byte // TODO: Add a "String() string" method to IPAddr. func (ip IPAddr) String() string { return fmt.Sprintf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]) } func main() { hosts := map[string]IPAddr{ "loopback": {127, 0, 0, 1}, "googleDNS": {8, 8, 8, 8}, } for name, ip := range hosts { fmt.Printf("%v: %v\n", name, ip) } }
Exercise: Errors
package main import ( "fmt" ) type ErrNegativeSqrt float64 func Sqrt(x float64) (float64, error) { if x < 0 { return 0, ErrNegativeSqrt(x) } z := 1.0 for i := 0; i < 10; i++ { z -= (z*z - x) / (2 * z) } return z, nil } func (e ErrNegativeSqrt) Error() string { return fmt.Sprintf("cannot Sqrt negative number: %f", float64(e)) } func main() { fmt.Println(Sqrt(2)) fmt.Println(Sqrt(-2)) }
Exercise: Readers
まず、問題の意味が分からない。いつか解く
Exercise: rot13Reader
分からない。いつか解く
Exercise: Images
分からない。いつか解く