【golog】我的go學與思10

映射

正文

對一個結構體進行映射,即結構體是其值,這裏定義鍵的類型爲string。

package main

import "fmt"

type Vertex struct {
	Lat, Long float64
}

var m = map[string]Vertex{
	"Bell Labs": Vertex{
		40.68433, -74.39967,
	},
	"Google": Vertex{
		37.42202, -122.08408,
	},
}

func main() {
	fmt.Println(m)
}
// 輸出
map[Bell Labs:{40.68433 -74.39967} Google:{37.42202 -122.08408}]

可以縮寫爲:

var m = map[string]Vertex{
	"Bell Labs": {40.68433, -74.39967},
	"Google":    {37.42202, -122.08408},
}

就是可以把結構體名省略。

操作

package main

import "fmt"

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)
}

map有增刪查改操作。

  • 對於一個鍵沒有其值,相當於插入。
  • 對於一個鍵若有其值,相當於修改。
  • 訪問鍵的時候,可帶一個bool變量來判斷是否存在

這個是很重要的,不論什麼時候都要知道一個東西是否可訪問,然後在讀寫,不然容易出現問題。當然map寫是隨意的,所以沒有問題。但是go語言可缺省判斷操作的便利性一定會被不良程序員濫用導致有錯誤風險。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章