1. 程式人生 > >Go/複合資料型別/map-字典

Go/複合資料型別/map-字典

# map是一種鍵值對存取的複合資料型別

package main

import "fmt"

func main() {
	//map 無序  鍵值唯一
	//鍵值一般是基本資料型別(不能是切片等資料型別、不能是函式型別)
	//map 只有len() 沒有cap()

	//宣告定義一個map變數
	var m map[int]string
	m1 := make(map[int]string)
	m2 := make(map[int]string,5)	//指定初始容量

	//map的賦值與新增
	m1[1] = "aaa"
	m1[2] = "bbb"
	m1[1] = "111"
	m1[3] = "ccc"
	fmt.Println(len(m))			//0
	fmt.Println(m1)				//map[1:111 2:bbb 3:ccc]
	fmt.Println(len(m2))		//0

	//map初始化
	m3 := map[int]string{1:"c",2:"c++",3:"java",4:"golang"}
	fmt.Println(m3)				//map[2:c++ 3:java 4:golang 1:c]

	//map遍歷
	for k,v := range m3 {
		fmt.Printf("%d:%s \n",k,v)
	}

	//map判斷key是否存在
	k := 5
	v,flg := m3[k]
	if flg == true{
		fmt.Println("key存在,value為:",v)
	}else{
		fmt.Println("key不存在")
	}

	//map的刪除
	k = 3
	delete(m3,k)	//刪除key為3的鍵值對
	fmt.Println(m3)

	//map作函式引數為引用傳遞
	test(m3)
	fmt.Println(m3)

}

func test(m map[int]string){
	m[100] = "fff"
}