站長資訊網
        最全最豐富的資訊網站

        golang make和new區別

        golang make和new區別

        make、new操作

        make用于內建類型(map、slice 和channel)的內存分配。new用于各種類型的內存分配。 (推薦學習:go)

        內建函數new本質上說跟其它語言中的同名函數功能一樣:new(T)分配了零值填充的T類型的內存空間,并且返回其地址,即一個*T類型的值。

        用Go的術語說,它返回了一個指針,指向新分配的類型T的零值。有一點非常重要:

        new返回指針。

        內建函數make(T, args)與new(T)有著不同的功能,make只能創建slice、map和channel,并且返回一個有初始值(非零)的T類型,而不是*T。本質來講,導致這三個類型有所不同的原因是指向數據結構的引用在使用前必須被初始化。

        例如,一個slice,是一個包含指向數據(內部array)的指針、長度和容量的三項描述符;在這些項目被初始化之前,slice為nil。對于slice、map和channel來說,make初始化了內部的數據結構,填充適當的值。

        make返回初始化后的(非零)值。

        代碼示例:

        var map1 map[string]string = make(map[string]string)     fmt.Println(map1)     fmt.Println(map1 == nil)      var map2 *map[string]string = new(map[string]string)     fmt.Println(map2)     fmt.Println(map2 == nil)     fmt.Println(*map2)     fmt.Println(*map2 == nil)     //    var map1 map[string]string     map1["aaa"] = "AAA"     map1["bbb"] = "BBB"     map1["ccc"] = "CCC"     fmt.Println(map1)     fmt.Println(len(map1))

        輸出:

        map[] false &map[] false map[] true map[bbb:BBB ccc:CCC aaa:AAA] Success: process exited with code 0.

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 91不卡在线精品国产| 99精品在线免费| 91自慰精品亚洲| 无码国产精品一区二区免费模式 | 精品久久久久久中文字幕| 无码人妻精品一区二区三区66| 久久成人精品| 99精品在线免费| 色偷偷888欧美精品久久久| 精品国产乱码久久久久久1区2区| 亚洲精品视频免费观看| 久久www免费人成精品香蕉| 国产精品综合久久第一页| 777久久精品一区二区三区无码| 国产成人精品手机在线观看| 亚洲精品无码不卡在线播HE| 亚洲福利精品一区二区三区 | 国产成人精品免费视频大| 国产区精品一区二区不卡中文| 无码国产精品一区二区免费式芒果| 亚洲国产成人久久精品99| 久久精品国产黑森林| 久久99精品久久久久久野外| 久久se精品一区二区影院| 久久99精品久久久久久齐齐| 久久久精品日本一区二区三区| 久久精品国产一区二区电影| 国产在线精品一区二区三区不卡| 国产精品香蕉在线观看| 国产精品第一区第27页| 国产高清在线精品一本大道| 国产精品偷伦视频免费观看了| 国产精品污WWW一区二区三区 | 国产999精品久久久久久| 成人国产精品一区二区视频| 国产精品成人一区二区| 精品国产亚洲一区二区在线观看 | 久久国产精品二国产精品| 久久久久国产精品嫩草影院| 日本欧美国产精品第一页久久| 最新在线精品国自av|