Golang中的Map(集合)


Map 是一種無序的鍵值對的集合。Map 最重要的一點是通過 key 來快速檢索數據,key 類似於索引,指向數據的值。
Map 是一種集合,所以我們可以像迭代數組和切片那樣迭代它。不過,Map 是無序的,我們無法決定它的返回順序,這是因為 Map 是使用 hash 表來實現的。

定義 Map

可以使用內建函數 make 也可以使用 map 關鍵字來定義 Map:

/* 聲明變量,默認map是nil */
var map_variable = map[key_data_type]value_data_type

/* 使用make函數 */
map_variable := make(map[key_data_type]value_data_type)

如果不初始化map,name就會創建一個nil map。nil map不能用來存放鍵值對。

實例

下面的實例演示了創建和使用map:

package main

import "fmt"

func main() {
	var likeMap map[string]string;	// 創建集合
	likeMap = make(map[string]string)

	/* map插入key-value對,每個男生喜歡的女生 */
	likeMap[ "周星馳" ] = "朱茵";
	likeMap[ "周傑倫" ] = "昆凌";
	likeMap[ "鄧超" ] = "孫儷";

	/* 通過key便利map */
	for key := range likeMap {
		fmt.Println(key, "xihuandeshi1", likeMap[key])
	}

	/* 查看集合在元素中是否存在 */
	value, ok := likeMap[ "zifeiy" ];
	if (ok) {
		fmt.Println("zifeiy喜歡的女孩是", value)
	} else {
		fmt.Println("zifeiy沒有喜歡的女孩")
	}
}

以上實例運行結果是:

周星馳 xihuandeshi1 朱茵
周傑倫 xihuandeshi1 昆凌
鄧超 xihuandeshi1 孫儷
zifeiy沒有喜歡的女孩

delete()函數

delete() 函數用於刪除集合的元素, 參數為 map 和其對應的 key。實例如下:

package main

import "fmt"

func main() {
	/* 創建map */
	likeMap := map[string]string {"周星馳": "朱茵", "周傑倫": "昆凌", "鄧超": "孫儷", "zifeiy": "劉亦菲"}
	fmt.Println("原始喜歡:")
	/* 打印喜歡 */
	for boy := range likeMap {
		fmt.Println(boy, "喜歡的是", likeMap[boy])
	}
	/* 刪除元素 */
	delete(likeMap, "zifeiy")
	fmt.Println("刪除元素后喜歡:")
	/* 打印喜歡 */
	for boy := range likeMap {
		fmt.Println(boy, "喜歡的是", likeMap[boy])
	}
}

輸出結果如下:

原始喜歡:
周星馳 喜歡的是 朱茵
周傑倫 喜歡的是 昆凌
鄧超 喜歡的是 孫儷
zifeiy 喜歡的是 劉亦菲
刪除元素后喜歡:
周星馳 喜歡的是 朱茵
周傑倫 喜歡的是 昆凌
鄧超 喜歡的是 孫儷


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM