1. 程式人生 > 其它 >Go語言之旅-go-tour練習答案

Go語言之旅-go-tour練習答案

技術標籤:gogo語言

中文主頁

https://tour.go-zh.org/

控制流(flowcontrol)

迴圈與函式(flowcontrol/8)

簡版,迴圈十次退出

package main
import (
     "fmt"
)

func Sqrt(x float64) float64 {
     z := float64(1)
     for i := 0; i <= 10; i++ {
          z = z - (z*z - x) / (2 * z)
     }
     return z
}

func main() {
     fmt.
Println(Sqrt(2)) }

無限迴圈達到指定條件再退出

package main

import (
     "fmt"
     "math"
)

func Sqrt(x float64) float64 {
     z := float64(1)

     for {
          y := z - (z*z - x) / (2 * z)
          if math.Abs(y - z) < 1e-10 {
               return y
          }
          z = y;
     }
} func main() { fmt.Println(Sqrt(2)) fmt.Println(math.Sqrt(2)) }

更多型別(moretypes)

切片(moretypes/18)

package main

import "golang.org/x/tour/pic"

func Pic(dx, dy int) [][]uint8 {
	myPic := make([][]uint8, dy)
	for i:=0; i<dy; i++{
		myPic[i] = make([]uint8, dx)
		for j:=0; j<dx;
j++ { myPic[i][j] = uint8(i*j) } } return myPic } func main() { pic.Show(Pic) }

影象:

  • uint8(i*j)
    在這裡插入圖片描述
  • uint8((i+j)/2)
    在這裡插入圖片描述
  • uint8(i^j)
    在這裡插入圖片描述
  • uint8(i%(j+1))
    在這裡插入圖片描述
  • uint8(float64(i) * math.Log(float64(j)))
    在這裡插入圖片描述

對映(moretypes/23)

package main

import (
	"strings"

	"golang.org/x/tour/wc"
)

func WordCount(s string) map[string]int {
	// 定義返回的計數器
	count := make(map[string]int)
	// 獲取所有單詞的陣列
	allStrings := strings.Fields(s)
	for _, val := range allStrings {
		// 計數
		count[val]++
	}
	return count
}

func main() {
	wc.Test(WordCount)
}

斐波納契閉包(moretypes/26)

package main

import "fmt"

// 返回一個“返回int的函式”
func fibonacci() func() int {
	// 定義初始值
	sum1 := 0
	sum2 := 1
	return func() int {
		// 求和
		sum := sum1 + sum2
		// 更新
		sum1 = sum2
		sum2 = sum
		return sum
	}
}

func main() {
	f := fibonacci()
	for i := 0; i < 10; i++ {
		fmt.Println(f())
	}
}

方法和介面(待更新,還沒看)