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

Go語言中make和new的區(qū)別及說明

 更新時(shí)間:2025年07月03日 14:30:30   作者:alden_ygq  
這篇文章主要介紹了Go語言中make和new的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1 概述

在Go語言中,new和make是兩個(gè)用于創(chuàng)建對象的內(nèi)建函數(shù),主要用于go語言數(shù)據(jù)結(jié)構(gòu)的初始化。

2 new 函數(shù)

2.1 功能

new 函數(shù)用于創(chuàng)建一個(gè)指定類型的指針,并將其初始化為零值。它返回指向新分配的內(nèi)存地址的指針。

2.2 語法

new 函數(shù)的語法非常簡單,只需在關(guān)鍵字 new 后面跟上類型即可。

func new(Type) *Type

2.3 初始化案例

package main
 ?
 import "fmt"
 ?
 type Person struct {
     Name string
     Age  int
 }
 ?
 func main() {
     p := new(Person)
     fmt.Println(p)
 }

在上述代碼中,使用 new 函數(shù)創(chuàng)建了一個(gè)指向 Person 類型的指針 p,并輸出其值。運(yùn)行結(jié)果為 &{ 0},表明 p 是一個(gè)指向 Person 類型零值的指針。

3 make 函數(shù)

3.1 功能

make 函數(shù)用于創(chuàng)建內(nèi)建類型(如切片、映射和通道)的對象,它返回一個(gè)已初始化的(非零值)對象。

3.2 語法

make 函數(shù)的語法與 new 函數(shù)有所不同,它需要指定類型和一些額外的參數(shù)。

func make(Type, size IntegerType) Type

3.3 初始化案例

package main
 ?
 import "fmt"
 ?
 func main() {
     // 創(chuàng)建一個(gè)長度為5,容量為10的整型切片
     s := make([]int, 5, 10)
     fmt.Println(s)
      
     // 創(chuàng)建一個(gè)鍵為string,值為int的映射
     m := make(map[string]int)
     m["a"] = 1
     m["b"] = 2
     fmt.Println(m)
      
     // 創(chuàng)建一個(gè)字符串通道
     c := make(chan string)
     fmt.Println(c)
 }

在上述代碼中,使用 make 函數(shù)創(chuàng)建了一個(gè)長度為 5,容量為 10 的整型切片 s,一個(gè)鍵為 string,值為 int 的映射 m,并創(chuàng)建了一個(gè)字符串通道 c。運(yùn)行結(jié)果分別為 [0 0 0 0 0],map[a:1 b:2] 和 0xc0000460c0,表明這些對象都被初始化為非零值。

4 區(qū)別

4.1 分配的類型

  • new 函數(shù)用于任何類型的分配,并返回一個(gè)指向該類型的指針。
  • make 函數(shù)只用于分配切片、映射和通道,并返回初始化后的切片、映射或通道對象。

4.2 返回值類型

  • new 函數(shù)返回指向分配類型的指針。
  • make 返回分配類型的初始化后的非零值。

4.3 使用場景

4.3.1 new函數(shù)

new 函數(shù)主要用于創(chuàng)建值類型的實(shí)例。值類型包括基本類型(如整型、浮點(diǎn)型、布爾型等)以及結(jié)構(gòu)體。new 函數(shù)返回一個(gè)指向新分配內(nèi)存的指針,可以方便地對該實(shí)例進(jìn)行操作和修改。

package main
 ?
 import "fmt"
 ?
 type Point struct {
     X, Y int
 }
 ?
 func main() {
     p := new(Point)
     p.X = 10
     p.Y = 20
     fmt.Println(p) // 輸出:&{10 20}
 }

4.3.2 make 函數(shù)

make 函數(shù)主要用于創(chuàng)建引用類型的對象。引用類型包括切片(slice)、映射(map)和通道(chan)。由于引用類型需要在使用之前進(jìn)行初始化,make 函數(shù)返回的是初始化后的非零值對象,而不是指針。

 package main
 ?
 import "fmt"
 ?
 func main() {
     // 創(chuàng)建一個(gè)長度為5,容量為10的整型切片
     s := make([]int, 5, 10)
     fmt.Println(s) // 輸出:[0 0 0 0 0]
      
     // 創(chuàng)建一個(gè)鍵為string,值為int的映射
     m := make(map[string]int)
     m["a"] = 1
     m["b"] = 2
     fmt.Println(m) // 輸出:map[a:1 b:2]
      
     // 創(chuàng)建一個(gè)字符串通道
     c := make(chan string)
     fmt.Println(c) // 輸出:0xc0000460c0
 }

4.3.3 代碼對比

package main
 import "fmt"
 ?
 type Person struct {
     Name string
     Age int
 }
 ?
 func main() {
     // 使用new創(chuàng)建Person類型的指針
     p1 := new(Person)
     p1.Name = "Alice"
     p1.Age = 25
     fmt.Println(p1) // 輸出:&{Alice 25}
     // 使用make創(chuàng)建切片
     s1 := make([]int, 5, 10)
     s1[0] = 1
     s1[1] = 2
     fmt.Println(s1) // 輸出:[1 2 0 0 0]
 }

從示例代碼可以看出,使用 new 創(chuàng)建的是指針類型,而使用 make 創(chuàng)建的是初始化后的非零值對象。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Go語言內(nèi)置包的使用

    Go語言內(nèi)置包的使用

    本文主要介紹了Go語言內(nèi)置包的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Golang中大端序和小端序的處理

    Golang中大端序和小端序的處理

    大端序和小端序是描述多字節(jié)數(shù)據(jù)在內(nèi)存中存儲順序的術(shù)語,本文主要介紹了Golang中大端序和小端序的處理,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • golang語法使用的注意事項(xiàng)

    golang語法使用的注意事項(xiàng)

    這篇文章主要給大家介紹了關(guān)于golang語法使用的一些注意事項(xiàng),Golang是一種靜態(tài)類型的編程語言,它支持基本的數(shù)據(jù)類型,包括整型、浮點(diǎn)型、布爾型、字符串型,需要的朋友可以參考下
    2023-07-07
  • 一文徹底掌握Go語言泛型的使用及應(yīng)用

    一文徹底掌握Go語言泛型的使用及應(yīng)用

    泛型是一種編程思想,它允許在編寫代碼時(shí)使用未知的類型,泛型可以增加代碼的靈活性和可復(fù)用性,同時(shí)還能提高代碼的安全性和可讀性,這篇文章主要介紹了Go語言泛型的使用及應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2025-10-10
  • Golang正則表達(dá)式判斷手機(jī)號或身份證方法實(shí)例

    Golang正則表達(dá)式判斷手機(jī)號或身份證方法實(shí)例

    日常使用一些軟件時(shí)會通過手機(jī)號碼來注冊,這就會用到正則表達(dá)式來判斷號碼是否正確,下面這篇文章主要給大家介紹了關(guān)于Golang正則表達(dá)式判斷手機(jī)號或身份證的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 基于golang的簡單分布式延時(shí)隊(duì)列服務(wù)的實(shí)現(xiàn)

    基于golang的簡單分布式延時(shí)隊(duì)列服務(wù)的實(shí)現(xiàn)

    這篇文章主要介紹了基于golang的簡單分布式延時(shí)隊(duì)列服務(wù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Go?項(xiàng)目目錄布局保姆級教程

    Go?項(xiàng)目目錄布局保姆級教程

    這篇文章主要為大家介紹了Go?項(xiàng)目目錄布局保姆級教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go語言對JSON數(shù)據(jù)進(jìn)行序列化和反序列化

    Go語言對JSON數(shù)據(jù)進(jìn)行序列化和反序列化

    這篇文章介紹了Go語言對JSON數(shù)據(jù)進(jìn)行序列化和反序列化的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 解析Go語言編程中的struct結(jié)構(gòu)

    解析Go語言編程中的struct結(jié)構(gòu)

    這篇文章主要介紹了Go語言編程中的struct結(jié)構(gòu),是Go語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • Go 語言數(shù)組和切片的區(qū)別詳解

    Go 語言數(shù)組和切片的區(qū)別詳解

    本文主要介紹了Go 語言數(shù)組和切片的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評論

南丰县| 手机| 福泉市| 丰城市| 内黄县| 京山县| 鄂州市| 长葛市| 永新县| 健康| 华蓥市| 瓦房店市| 乌什县| 郸城县| 平陆县| 平阴县| 东光县| 抚顺市| 宣城市| 荣昌县| 禄丰县| 安平县| 杭锦旗| 威海市| 吴旗县| 天峨县| 武威市| 蒲江县| 荆门市| 元朗区| 高邑县| 南昌市| 靖宇县| 班玛县| 察雅县| 平南县| 延长县| 城固县| 盐池县| 长汀县| 乐业县|