欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言中make和new函數(shù)的用法與區(qū)別

 更新時間:2022年07月16日 14:13:44   作者:奮斗的大橙子  
這篇文章介紹了Go語言中make和new函數(shù)的用法與區(qū)別,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

相同點:

make和new都是用來創(chuàng)建分配類型內(nèi)存的。

不同點:

先看下面的代碼

package main
import "fmt"
func main(){
  var i *int
  var x = 10
  *i=x
  fmt.Println(*i)
}

編譯過程會出錯

panic: runtime error: invalid memory address or nil pointer dereference <br data-filtered="filtered">[signal 0xc0000005 code=0x1 addr=0x0 pc=0x48b576]

我們的想法是把 10 賦值 i指向的地址,但是這里由于 *i 沒有初始化,所以并不知道 *i的地址是什么,如果直接 *i的賦值為10,那么肯定是不行的(10這個地址沒有)

所以要想使用 *i,需要把 x的地址給i,修改成如下代碼

var i *int
var x = 10
i=&x
fmt.Println(*i)

補充: * 代表取地址里內(nèi)容, &代表取地址

或者使用 new 進(jìn)行初始化,代碼如下:

var x = 10
var i *int i = new(int)
*i=x
fmt.Println(*i)

new的源代碼如下

它只接受一個參數(shù),這個參數(shù)是一個類型,分配好內(nèi)存后,返回一個指向該類型內(nèi)存地址的指針。同時請注意它同時把分配的內(nèi)存置為零,也就是類型的零值。

make也是用于內(nèi)存分配的,但是和new不同,它只用于chan、map以及slice的內(nèi)存創(chuàng)建,

而且它返回的類型就是這三個類型本身,而不是他們的指針類型,因為這三種類型就是引用類型,所以就沒有必要返回他們的指針了。

綜上:

二者都是內(nèi)存的分配(堆上)

區(qū)別1

  • make只用于slice、map以及channel的初始化(非零值);
  • new用于類型的內(nèi)存分配,并且內(nèi)存置為零。

區(qū)別2

  • make返回的還是這三個引用類型本身;
  • new返回的是指向類型的指針。

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • 一文帶你了解Go語言fmt標(biāo)準(zhǔn)庫輸出函數(shù)的使用

    一文帶你了解Go語言fmt標(biāo)準(zhǔn)庫輸出函數(shù)的使用

    這篇文章主要為大家詳細(xì)介紹了Go語言中 fmt 標(biāo)準(zhǔn)庫輸出函數(shù)的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • Golang語言如何讀取http.Request中body的內(nèi)容

    Golang語言如何讀取http.Request中body的內(nèi)容

    這篇文章主要介紹了Golang語言如何讀取http.Request中body的內(nèi)容問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • golang?http請求未釋放造成的錯誤問題

    golang?http請求未釋放造成的錯誤問題

    這篇文章主要介紹了golang?http請求未釋放造成的錯誤問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Golang泛型與類型約束的用法詳解

    Golang泛型與類型約束的用法詳解

    這篇文章主要介紹了Golang泛型與類型約束的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Golang學(xué)習(xí)筆記之安裝Go1.15版本(win/linux/macos/docker安裝)

    Golang學(xué)習(xí)筆記之安裝Go1.15版本(win/linux/macos/docker安裝)

    這篇文章主要介紹了Golang學(xué)習(xí)筆記之安裝Go1.15版本(win/linux/macos/docker安裝),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 1行Go代碼實現(xiàn)反向代理的示例

    1行Go代碼實現(xiàn)反向代理的示例

    這篇文章主要介紹了1行Go代碼實現(xiàn)反向代理的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • go語言學(xué)習(xí)之包和變量詳解

    go語言學(xué)習(xí)之包和變量詳解

    這篇文章主要給大家愛介紹了關(guān)于go語言學(xué)習(xí)之包和變量的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用go語言具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • Golang實現(xiàn)支付寶沙箱支付的方法步驟

    Golang實現(xiàn)支付寶沙箱支付的方法步驟

    本文主要介紹了Golang實現(xiàn)支付寶沙箱支付的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Go語言入門Go?Web?Fiber框架快速了解

    Go語言入門Go?Web?Fiber框架快速了解

    這篇文章主要為大家介紹了Go語言入門Go?Web?Fiber框架的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Go語言基礎(chǔ)switch條件語句基本用法及示例詳解

    Go語言基礎(chǔ)switch條件語句基本用法及示例詳解

    這篇文章主要為大家介紹了Go語言基礎(chǔ)switch條件語句基本用法及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11

最新評論