在go語言中,可以使用new和make來創建map類型的變量,但是它們之間有很明顯的不同,使用new來創建map時,返回的內容是一個指針,這個指針指向了一個所有字段全爲0的值map對象,需要初始化後才能使用,而使用make來創建map時,返回的內容是一個引用,可以直接使用。他們之間的差異大概如下圖所示:
下面來看它們的具體用法
使用new來創建並使用map:
//使用new創建一個map指針
ma := new(map[string]int)
//第一種初始化方法
*ma = map[string]int{}
(*ma)["a"] = 44
fmt.Println(*ma)
//第二種初始化方法
*ma = make(map[string]int, 0)
(*ma)["b"] = 55
fmt.Println(*ma)
//第三種初始化方法
mb := make(map[string]int, 0)
mb["c"] = 66
*ma = mb
(*ma)["d"] = 77
fmt.Println(*ma)
使用make來創建並使用map:
ma := make(map[string]int)
ma["a"] = 33
fmt.Println(ma)