最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解golang中make與new的異同點(diǎn)和用法

 更新時(shí)間:2024年01月18日 09:45:42   作者:莫忘初心丶  
這篇文章將給大家介紹了go語(yǔ)言中函數(shù)new與make的使用和區(qū)別,關(guān)于go語(yǔ)言中new和make是內(nèi)建的兩個(gè)函數(shù),主要用來(lái)創(chuàng)建分配類型內(nèi)存,文中通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下

make介紹

在Go語(yǔ)言中,make 是一個(gè)用于創(chuàng)建切片、映射(map)和通道(channel)等引用類型的內(nèi)置函數(shù)。make 的主要作用是為這些引用類型分配內(nèi)存并進(jìn)行初始化。

用法:

1. 創(chuàng)建切片(slice):

slice := make([]int, 5) // 創(chuàng)建一個(gè)包含5個(gè)整數(shù)的切片

make 接受兩個(gè)參數(shù),第一個(gè)是類型,第二個(gè)是長(zhǎng)度。對(duì)于切片,還可以提供一個(gè)可選的容量參數(shù):

slice := make([]int, 5, 10) // 創(chuàng)建一個(gè)長(zhǎng)度為5,容量為10的切片

2. 創(chuàng)建映射(map):

myMap := make(map[string]int) // 創(chuàng)建一個(gè)字符串到整數(shù)的映射

3. 創(chuàng)建通道(channel):

ch := make(chan int) // 創(chuàng)建一個(gè)整數(shù)類型的通道

注意事項(xiàng):

  1. make 只能用于引用類型的數(shù)據(jù)結(jié)構(gòu),不能用于值類型(例如結(jié)構(gòu)體)的創(chuàng)建。
  2. make 返回被初始化的引用類型實(shí)例,而不是指針。
  3. 對(duì)于切片和映射,make 除了分配內(nèi)存,還會(huì)初始化內(nèi)部的數(shù)據(jù)結(jié)構(gòu),確保它們可以被直接使用。
  4. 對(duì)于通道,make 會(huì)創(chuàng)建并返回一個(gè)未被緩沖的通道。

總體而言,make 主要用于創(chuàng)建引用類型并進(jìn)行初始化,以確保它們可以被正確地使用。

new介紹

在Go語(yǔ)言中,new 是一個(gè)用于為值類型分配內(nèi)存并返回指向新分配的零值實(shí)例的指針的內(nèi)置函數(shù)。new 主要用于創(chuàng)建值類型的實(shí)例,例如結(jié)構(gòu)體。以下是 new 的基本用法和注意事項(xiàng):

用法:

1. 創(chuàng)建值類型實(shí)例:

ptr := new(int) // 創(chuàng)建一個(gè)整數(shù)類型的指針,指向新分配的零值整數(shù)

2. 創(chuàng)建結(jié)構(gòu)體實(shí)例:

type MyStruct struct {
    Field1 int
    Field2 string
}

instance := new(MyStruct) // 創(chuàng)建一個(gè) MyStruct 類型的指針,指向新分配的零值結(jié)構(gòu)體

注意事項(xiàng):

  1. new 返回一個(gè)指向新分配內(nèi)存的零值實(shí)例的指針。
  2. 對(duì)于值類型,new 分配的內(nèi)存會(huì)被初始化為零值。
  3. new 接受一個(gè)參數(shù),即要分配內(nèi)存的類型,并返回一個(gè)指向該類型的零值的指針。
  4. new 不適用于引用類型(如切片、映射和通道),只能用于值類型的創(chuàng)建。
  5. new 分配的內(nèi)存不會(huì)被清理,需要程序員負(fù)責(zé)釋放。

總體而言,new 主要用于為值類型分配內(nèi)存,并返回一個(gè)指向新分配的零值實(shí)例的指針。在實(shí)際使用時(shí),根據(jù)需要選擇使用 new 還是直接聲明和初始化。

make與new的異同

make 和 new 都是用于在Go語(yǔ)言中進(jìn)行內(nèi)存分配的內(nèi)置函數(shù),但它們的用途和行為有一些關(guān)鍵的區(qū)別。

相同點(diǎn):

  • 內(nèi)存分配: 兩者都用于在堆上分配內(nèi)存。

不同點(diǎn):

1. 適用類型:

  • make make: 只用于slice、map以及channel的初始化。
slice := make([]int, 5)
  • new 用于創(chuàng)建值類型的實(shí)例,例如結(jié)構(gòu)體。返回一個(gè)指向新分配的零值實(shí)例的指針。
ptr := new(int)

2. 返回類型:

  • make 返回被初始化的引用類型實(shí)例,而不是指針。

  • new 返回一個(gè)指向新分配的零值實(shí)例的指針。

3. 參數(shù):

  • make 接受類型和長(zhǎng)度等參數(shù),用于初始化引用類型的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。
slice := make([]int, 5)
  • new 只接受類型參數(shù),返回一個(gè)指向該類型的零值的指針。
ptr := new(int)

4. 初始化:

  • make 除了分配內(nèi)存,還會(huì)初始化引用類型的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。

  • new 分配的內(nèi)存會(huì)被初始化為零值。

總結(jié):

  • 使用 make 主要用于初始化引用類型,確保它們可以被直接使用。
  • 使用 new 主要用于為值類型分配內(nèi)存,返回一個(gè)指向新分配的零值實(shí)例的指針。

選擇使用 make 還是 new 取決于您要?jiǎng)?chuàng)建的數(shù)據(jù)結(jié)構(gòu)的類型和初始化需求。

以上就是詳解golang中make與new的異同點(diǎn)和用法的詳細(xì)內(nèi)容,更多關(guān)于golang make與new異同和用法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • golang context接口類型方法介紹

    golang context接口類型方法介紹

    這篇文章主要為大家介紹了golang context接口類型方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • golang?pprof?監(jiān)控系列?go?trace統(tǒng)計(jì)原理與使用解析

    golang?pprof?監(jiān)控系列?go?trace統(tǒng)計(jì)原理與使用解析

    這篇文章主要為大家介紹了golang?pprof?監(jiān)控系列?go?trace統(tǒng)計(jì)原理與使用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 基于Go+WebSocket實(shí)現(xiàn)實(shí)時(shí)通信功能

    基于Go+WebSocket實(shí)現(xiàn)實(shí)時(shí)通信功能

    在互聯(lián)網(wǎng)應(yīng)用程序中,實(shí)時(shí)通信是一種非常重要的功能,WebSocket 是一種基于 TCP 的協(xié)議,它允許客戶端和服務(wù)器之間進(jìn)行雙向通信,本文將介紹如何使用 Golang 創(chuàng)建單獨(dú)的 WebSocket 會(huì)話,以實(shí)現(xiàn)實(shí)時(shí)通信功能,需要的朋友可以參考下
    2023-10-10
  • Go語(yǔ)言defer語(yǔ)句的三種機(jī)制整理

    Go語(yǔ)言defer語(yǔ)句的三種機(jī)制整理

    在本篇文章里小編給大家分享的是一篇關(guān)于Go語(yǔ)言defer語(yǔ)句的三種機(jī)制整理,需要的朋友們學(xué)習(xí)下吧。
    2020-03-03
  • Goland使用delve進(jìn)行遠(yuǎn)程調(diào)試的詳細(xì)教程

    Goland使用delve進(jìn)行遠(yuǎn)程調(diào)試的詳細(xì)教程

    網(wǎng)上給出的使用delve進(jìn)行遠(yuǎn)程調(diào)試,都需要先在本地交叉編譯或者在遠(yuǎn)程主機(jī)上編譯出可運(yùn)行的程序,然后再用delve在遠(yuǎn)程啟動(dòng)程序,本教程會(huì)將上面的步驟簡(jiǎn)化為只需要兩步,1,在遠(yuǎn)程運(yùn)行程序2,在本地啟動(dòng)調(diào)試,需要的朋友可以參考下
    2024-08-08
  • go語(yǔ)言中數(shù)據(jù)接口set集合的實(shí)現(xiàn)

    go語(yǔ)言中數(shù)據(jù)接口set集合的實(shí)現(xiàn)

    set集合是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),它代表了一個(gè)唯一元素的集合,本文主要介紹了set的基本特性,包括唯一性、無(wú)序性、可變性和集合運(yùn)算,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • Golang依賴注入工具digo的使用詳解

    Golang依賴注入工具digo的使用詳解

    這篇文章主要為大家詳細(xì)介紹了Golang中依賴注入工具digo的使用,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • 詳解如何使用go-acme/lego實(shí)現(xiàn)自動(dòng)簽發(fā)證書(shū)

    詳解如何使用go-acme/lego實(shí)現(xiàn)自動(dòng)簽發(fā)證書(shū)

    這篇文章主要為大家詳細(xì)介紹了如何使用?go-acme/lego?的客戶端或庫(kù)完成證書(shū)的自動(dòng)簽發(fā),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • Go標(biāo)識(shí)符命名規(guī)則與最佳實(shí)踐指南

    Go標(biāo)識(shí)符命名規(guī)則與最佳實(shí)踐指南

    在Go語(yǔ)言中,標(biāo)識(shí)符(Identifiers)是用來(lái)命名變量、函數(shù)、類型等的名稱,遵循良好的命名規(guī)則和最佳實(shí)踐對(duì)于編寫(xiě)可讀、可維護(hù)的代碼至關(guān)重要,本文介紹Go標(biāo)識(shí)符命名規(guī)則與最佳實(shí)踐指南,感興趣的朋友跟隨小編一起看看吧
    2026-07-07
  • Go語(yǔ)言中Redis緩存與本地內(nèi)存緩存實(shí)戰(zhàn)

    Go語(yǔ)言中Redis緩存與本地內(nèi)存緩存實(shí)戰(zhàn)

    在現(xiàn)代高并發(fā)系統(tǒng)中,緩存技術(shù)是提升性能和降低數(shù)據(jù)庫(kù)壓力的關(guān)鍵手段,本文將為大家介紹一下Redis緩存與本地內(nèi)存緩存的具體應(yīng)用,需要的可以了解下
    2025-03-03

最新評(píng)論

民丰县| 内丘县| 化隆| 海口市| 宣恩县| 凤山县| 含山县| 马山县| 通州区| 长沙市| 麻栗坡县| 临洮县| 梁河县| 石台县| 福建省| 固镇县| 鄂托克旗| 荆门市| 乌拉特后旗| 溆浦县| 嫩江县| 康定县| 建阳市| 抚州市| 湘西| 台南市| 札达县| 常熟市| 拜城县| 集安市| 云阳县| 龙门县| 武城县| 定边县| 南城县| 甘肃省| 柘荣县| 来凤县| 封丘县| 万荣县| 万载县|