這篇文章主要講解了“go語言make 和 new的用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“go語言make 和 new的用法”吧!
make
和 new
是golang中初始化一個結構時,經常會使用到的關鍵子,但是這兩個關鍵字常常讓我們感到困惑。因為它們能夠初始化的結構并不相同。
make
的作用是初始化內置的數據結構,例如slice(切片)、哈希表和 Channelnew
的作用是根據傳入的類型分配一片內存空間并返回指向這片內存空間的指針例如:
//創建了一個元素為int的slice,返回的是slice的頭部指針
slice := make([]int, 0, 100)
//創建了一個key為int,value為布爾類型的map,返回的是結構體指針
m := make(map[int]bool, 10)
//創建了一個元素為int的管道,返回的是結構體的指針
ch := make(chan int, 5)
而new
呢,相比與復雜的 make
關鍵字, 功能就簡單多了,它只能接收類型作為參數然后返回一個指向該類型的指針
例如:
i := new(int)
//完全等價于new,返回的都是指針
var v int
i := &v
new
的作用是 初始化 一個指向類型的指針 (*T), make
的作用是為 slice
, map
或者 channel
初始化,并且返回引用 T
make(T, args)
函數的目的與new(T)
不同。它僅僅用于創建 Slice
, Map
和 Channel
,并且返回類型是 T(不是T*)的一個初始化的(不是零值)的實例。這中差別的出現是由于這三種類型實質上是對在使用前必須進行初始化的數據結構的引用。例如, Slice是一個 具有三項內容的描述符,包括 指向數據(在一個數組內部)的指針,長度以及容量。在這三項內容被初始化之前,Slice
的值為nil
。對于Slice
,Map
和Channel
, make()
函數初始化了其內部的數據結構,并且準備了將要使用的值
感謝各位的閱讀,以上就是“go語言make 和 new的用法”的內容了,經過本文的學習后,相信大家對go語言make 和 new的用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。