溫馨提示×

Golang中new和make有什么區(qū)別

小億
91
2024-01-30 12:30:47
欄目: 編程語言

在Golang中,newmake 是兩個用于分配內(nèi)存的內(nèi)建函數(shù)。

  1. new 函數(shù):

    • new 函數(shù)用于分配并初始化一個值的指針,返回指針。
    • new 函數(shù)的參數(shù)是一個類型,并返回該類型的指針。
    • 分配的內(nèi)存被置零,也就是每個位都被設(shè)置為零值。
    • new 函數(shù)返回的是指向新分配的零值的指針。

    示例:

    var p *int
    p = new(int)
    *p = 42
    fmt.Println(*p) // 輸出: 42
    
  2. make 函數(shù):

    • make 函數(shù)用于創(chuàng)建內(nèi)置引用類型(如 slicemapchannel)的對象。
    • make 函數(shù)的參數(shù)是一個類型和一個長度(可選,不適用于 channel)。
    • make 函數(shù)返回該類型的初始化的非零值。

    示例:

    var s []int
    s = make([]int, 5, 10)
    s[0] = 1
    fmt.Println(s) // 輸出: [1 0 0 0 0]
    

綜上所述,new 函數(shù)返回的是指向零值的指針,而 make 函數(shù)返回的是初始化的非零值。

0