十年網站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網站問題一站解決
這篇文章主要講解了“go語言make 和 new的用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“go語言make 和 new的用法”吧!
網站建設、網站制作介紹好的網站是理念、設計和技術的結合。創(chuàng)新互聯建站擁有的網站設計理念、多方位的設計風格、經驗豐富的設計團隊。提供PC端+手機端網站建設,用營銷思維進行網站設計、采用先進技術開源代碼、注重用戶體驗與SEO基礎,將技術與創(chuàng)意整合到網站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。
make
和 new
是golang中初始化一個結構時,經常會使用到的關鍵子,但是這兩個關鍵字常常讓我們感到困惑。因為它們能夠初始化的結構并不相同。
make
的作用是初始化內置的數據結構,例如slice(切片)、哈希表和 Channelnew
的作用是根據傳入的類型分配一片內存空間并返回指向這片內存空間的指針例如:
//創(chuàng)建了一個元素為int的slice,返回的是slice的頭部指針
slice := make([]int, 0, 100)
//創(chuàng)建了一個key為int,value為布爾類型的map,返回的是結構體指針
m := make(map[int]bool, 10)
//創(chuàng)建了一個元素為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)
不同。它僅僅用于創(chuàng)建 Slice
, Map
和 Channel
,并且返回類型是 T(不是T*)的一個初始化的(不是零值)的實例。這中差別的出現是由于這三種類型實質上是對在使用前必須進行初始化的數據結構的引用。例如, Slice是一個 具有三項內容的描述符,包括 指向數據(在一個數組內部)的指針,長度以及容量。在這三項內容被初始化之前,Slice
的值為nil
。對于Slice
,Map
和Channel
, make()
函數初始化了其內部的數據結構,并且準備了將要使用的值
感謝各位的閱讀,以上就是“go語言make 和 new的用法”的內容了,經過本文的學習后,相信大家對go語言make 和 new的用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!