Exercise: Loops and Functions,学习for循环
package mainimport ("fmt"
)func Sqrt(x float64) float64 {z:=1.0for i:=0;i<10;i++{z -= (z*z - x) / (2*z)fmt.Println(z)}return z
}func main() {fmt.Println(Sqrt(2))
}
Exercise: Slices
package mainimport ("golang.org/x/tour/pic"
)func Pic(dx, dy int) [][]uint8 {pic := make([][]uint8, dx)for x := range pic {pic[x] = make([]uint8, dy)for y := range pic[x] {pic[x][y] = uint8(255)}}return pic
}func main() {pic.Show(Pic)
}
Exercise: Maps
package mainimport ("golang.org/x/tour/wc""strings"
)func WordCount(s string) map[string]int {dataMap:=make(map[string]int)strArr:=strings.Fields(s)for _,x:= range strArr{dataMap[x]+=1}return dataMap
}func main() {wc.Test(WordCount)
}
Exercise: Fibonacci closure
package mainimport "fmt"// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {le:=-1ri:=1return func()int{fib:=le+rile=riri=fibreturn fib}
}func main() {f := fibonacci()for i := 0; i < 10; i++ {fmt.Println(f())}
}
Exercise: Stringers
package mainimport "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 int2str(a byte) string{return string(int(a+'0'))
}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 mainimport ("fmt"
)type ErrNegativeSqrt float64func (e ErrNegativeSqrt) Error() string{return fmt.Sprintf("cannot Sqrt negative number: %v",float64(e))
}func Sqrt(x float64) (float64, error) {if x < 0{return 0,ErrNegativeSqrt(x)}z := 1.0for i := 0; i < 10; i++ {z -= (z*z - x) / (2 * z)}return z, nil
}func main() {fmt.Println(Sqrt(2))fmt.Println(Sqrt(-2))
}
Exercise: Readers