go語言中使用new和make創建map時的差異

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

 

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