funcSqrt(x float64)float64 { z := x next := float64(0) for { z = z - (z*z-x)/2*z // 可以使用 math 包下的 Abs() 简写,精度的判断也可以使用 1e-10 if (next > z && (next-z) < 0.1) || (z > next && (z-next) < 0.1) { break } next = z } return next }
funcPic(dx, dy int) [][]uint8 { // 创建 dx 长度的二维数组 a := make([][]uint8, dx) for x := range a { // dy 长度的子数组 b := make([]uint8, dy) for y := range b { // 使用公式填充 b[y] = uint8(x % (y + 1)) } a[x] = b } return a }
funcWordCount(s string)map[string]int { // 创建一个 "string": int 的 map 集合 m := make(map[string]int) c := strings.Fields(s) // 遍历数组,将字符作为下标进行累加 for _, val := range c { m[val]++ }
funcSqrt(x float64) (float64, error) { if x <= 0 { // 自身会根据返回类型调用 `Error()` returnfloat64(0), ErrNegativeSqrt(x) }
z := x next := float64(0) for { z = z - (z*z-x)/2*z if (next > z && (next-z) < 0.1) || (z > next && (z-next) < 0.1) { break } next = z } return next, nil }