学习 golang 之一些小函数记录
2018年06月25日
连续输出 1-100 内的数字
1func main() { 2 i := 1 3 for { 4 if i > 100 { 5 break 6 } 7 fmt.Println(i) 8 i = i + 1 9 } 10}
1func main() { 2 s := make([]int, 100) 3 for k := range s { 4 fmt.Println(k + 1) 5 } 6}
连续输出 1-100 内的偶数
1func main() { 2 i := 1 3 for { 4 if i > 100 { 5 break 6 } 7 if i % 2 == 0 { 8 fmt.Println(i) 9 } 10 i = i + 1 11 } 12}
1func main() { 2 s := make([]int, 100) 3 for k := range s { 4 i := k + 1 5 if i % 2 == 0 { 6 fmt.Println(i) 7 } 8 } 9}
连续输出 1-100 内的质数
1func main() { 2 s := make([]int, 100) 3 for k := range s { 4 i := k + 1 5 if i == 2 { 6 fmt.Println(i) 7 } 8 if i > 2 { 9 isTrue := true 10 for j := 2; j < i; j++ { 11 if i % j == 0 { 12 isTrue = false 13 break 14 } 15 } 16 if isTrue { 17 fmt.Println(i) 18 } 19 } 20 } 21}
牛顿法实现平方根函数
1package main 2 3import "fmt" 4 5func sqrt(x float64) float64 { 6 eps := 1e-12 7 result := x 8 for { 9 lastValue := result 10 result = (result + x / result) / 2 11 fmt.Println(result) 12 if abs(result - lastValue) < eps { 13 break 14 } 15 } 16 return result 17} 18 19func abs(x float64) float64 { 20 if x < 0 { 21 x = -x 22 } 23 return x 24} 25 26func main() { 27 sqrt(4) 28}
自定义 String 方法打印 ip 地址
1package main 2 3import "fmt" 4import "strconv" 5 6type IPAddr [4]byte 7 8func (ip IPAddr) String() string { 9 var str string 10 for _, v := range ip { 11 str = str + "." + strconv.Itoa(int(v)) 12 } 13 str = str[1:] 14 return str 15} 16 17func main() { 18 hosts := map[string]IPAddr{ 19 "loopback": {127, 0, 0, 1}, 20 "googleDNS": {8, 8, 8, 8}, 21 } 22 for name, ip := range hosts { 23 fmt.Printf("%v: %v\n", name, ip) 24 } 25}