繼續研究 Go,這次會涵蓋 Map 和 Functions
Map
Map 是一個 Key Value 形式的格式,當沒有給予初始值時,預設值為 nil,一樣可以使用 make 建立
1 2 3 4 5 6 7 8 9 10 11 12
   | func main() { 	var m map[string]int 	if m == nil {         fmt.Println("is nil")  	}     m = make(map[string]int)     fmt.Println(m)  	     m["first"] = 1     fmt.Println(m)      fmt.Println(m["first"])  }
  | 
 
給予初始值的方式與 struct 雷同,但須要多給 key 值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | type Vertex struct { 	Lat, Long float64 }
  var m = map[string]Vertex{ 	"Bell Labs": Vertex{ 		40.68433, -74.39967, 	}, 	"Google": Vertex{ 		37.42202, -122.08408, 	}, }
  var m = map[string]Vertex{ 	"Bell Labs": {40.68433, -74.39967}, 	"Google":    {37.42202, -122.08408}, }
  | 
 
修改 Map 資料的方式也很直覺,直接根據 Key 值修改資料即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | func main() { 	m := make(map[string]int)
  	m["Answer"] = 42 	fmt.Println("The value:", m["Answer"])
  	m["Answer"] = 48 	fmt.Println("The value:", m["Answer"])
  	delete(m, "Answer") 	fmt.Println("The value:", m["Answer"])
      v, ok := m["Answer"]      fmt.Println("The value:", v, "Present?", ok)  }
 
  | 
 
Functions
Go  裡面的 Function 也是一種型別,表示我們可以將 Function 傳入一個 Function 或是回傳一個 Function。
 1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | func compute(fn func(float64, float64) float64) float64 { 	return fn(3, 4) }
  func main() { 	hypot := func(x, y float64) float64 { 		return math.Sqrt(x*x + y*y) 	} 	fmt.Println(hypot(5, 12))
  	fmt.Println(compute(hypot)) 	fmt.Println(compute(math.Pow)) }
 
  | 
 
Function Closures 好像也是基本了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | func adder() func(int) int { 	sum := 0 	return func(x int) int { 		sum += x 		return sum 	} }
  func main() { 	pos := adder() 	for i := 0; i < 10; i++ { 		fmt.Println(             pos(i),  		) 	} }
  | 
 
小結
到這篇筆記為止,應該都算是 Go  的基礎篇,接下來的筆記都算是比較進階的內容。期待進入 Go 的進階世界