学习 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}