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

        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號
        主站蜘蛛池模板: 国产精品人成在线观看| 亚洲爆乳无码精品AAA片蜜桃| 欧美极品欧美精品欧美视频| 中文精品99久久国产 | 日韩精品无码一区二区三区不卡| wwwvr高清亚洲精品二区| 国产成人无码久久久精品一| 亚洲精品岛国片在线观看| 国产综合精品久久亚洲| 日本精品卡一卡2卡3卡四卡| 国产三级久久久精品麻豆三级 | 国产成人精品日本亚洲18图| 精品人妻中文字幕有码在线| 亚洲综合无码精品一区二区三区| 久久996热精品xxxx| 国内精品国产成人国产三级| 99久久精品久久久久久清纯| 久久国产成人精品麻豆| 国产精品久久网| 2022国产精品自产拍在线观看| 久久香综合精品久久伊人| 亚洲国产精品成人久久| 中文字幕乱码中文乱码51精品| 亚洲国产精品无码久久青草| 四虎国产精品免费久久| 日韩亚洲精品福利| 亚洲AV永久无码精品一区二区 | 久久国产精品一区| 精品无码三级在线观看视频| 国产三级精品三级在线观看专1| 94久久国产乱子伦精品免费| 中文字幕亚洲精品| 99久久精品免费国产大片| 热99re久久国超精品首页| 亚洲综合一区二区国产精品| 91精品国产综合久久香蕉| 国产成人久久久精品二区三区| 国产精品嫩草影院一二三区| 精品无码国产自产拍在线观看蜜| 久久九九久精品国产| 日韩精品毛片|