漫畫Go語言中函式new與make的使用和區別

2021-10-21 21:09:18 字數 1596 閱讀 7050

​賴克與甜甜,有趣有料有溫度,技術學習有思路!

看看賴克怎麼給甜甜講解go語言中的new與make吧!

對於值型別的變數,我們通過var 宣告,系統會預設為他分配記憶體空間,並賦該型別的零值。如下,我們宣告乙個int型別變數i,輸出為0。

var i intfmt.println(i)
而如果我們宣告乙個指標型別的變數,系統不會為他分配記憶體,改變量預設就是nil。此時如果你想直接使用,那麼系統會拋異常。

var j *intfmt.println(j)*j = 10  //invalid memory address or nil pointer dereference
也就是說,空指標還沒有記憶體分配,是不能使用的。那麼要想使用,此時就需要new出場啦。

宣告指標型別變數後,通過new為他分配記憶體,有了記憶體空間,這個變數就可以自由的使用啦。

我們來看一下new函式

它只接受乙個引數,這個引數是乙個型別,分配好記憶體後,返回乙個指向該型別記憶體位址的指標。同時把分配的記憶體置為零,也就是型別的零值。

var c chan intfmt.printf("%#v \n",c) //(chan int)(nil)c = make(chan int)fmt.printf("%#v", c) //(chan int)(0xc000062060)
宣告管道型別變數c,此時c還是nil,不可用;

通過make來分配記憶體並初始化,c就獲得了記憶體可以使用了。

有趣有料有溫度,和我一起學技術!

深入講解Go語言中函式new與make的使用和區別

前言 本文主要給大家介紹了go語言中函式new與make的使用和區別,關於go語言中new和make是內建的兩個函式,主要用來建立分配型別記憶體。在我們定義生成變數的時候,可能會覺得有點迷惑,其實他們的規則很簡單,下面我們就通過一些示例說明他們的區別和使用,話不多說了,來一起看看詳細的介紹吧。變數的...

深入講解Go語言中函式new與make的使用和區別

大家都知道go語言中的函式new與函式make一直是新手比較容易混淆的東西,看著相似,但其實不同,不過解釋兩者之間的不同也非常容易,下面這篇文章主要給大家介紹了關於go語言中函式new與make區別的相關資料,需要的朋友可以參考下。前言 本文主要給大家介紹了go語言中函式new與make的使用和區別...

go語言中make 與new 的不同

make用於內建型別 map slice 和channel 的記憶體分配。new用於各種型別的記憶體分配。內建函式new本質上說跟其它語言中的同名函式功能一樣 new t 分配了零值填充的t型別的記憶體空間,並且返回其位址,即乙個 t型別的值。用go的術語說,它返回了乙個指標,指向新分配的型別t的零...