千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Go語言里的make和new有什么區(qū)別?

Go語言里的make和new有什么區(qū)別?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-10-15 00:45:51 1697301951

一、適用類型

make:make只能用于創(chuàng)建slice、map和channel類型的對象,這三種類型屬于引用類型。new:new用于創(chuàng)建所有類型的對象,返回的是指向新分配的零值對象的指針,適用于所有類型。

二、返回類型

make:make返回的是一個被初始化后的(非零值)的引用類型對象,而不是指針。new:new返回的是一個指向新分配的零值對象的指針。

三、用途

make:make用于創(chuàng)建slice、map和channel類型的對象,并對其進行初始化。new:new用于創(chuàng)建各種類型的對象,返回的對象是該類型的指針,并且該對象的值為該類型的零值。

四、內存分配

make:對于slice、map和channel類型,make會進行內存分配,并初始化對象的內部結構,返回一個可用的對象。new:new只是進行零值內存分配,不會初始化對象的內部結構,返回的對象是該類型的指針,并且值為零值。

五、參數(shù)類型

make:make接收的參數(shù)是具體的類型和長度等信息,用于創(chuàng)建特定類型的對象。new:new接收的參數(shù)是一個類型,用于創(chuàng)建該類型的零值對象。

六、用法

make:常用于創(chuàng)建slice、map和channel,并進行初始化,以便直接使用。new:常用于創(chuàng)建各種類型的對象,并獲取指向新對象的指針,通常用于獲取對象的地址。

七、返回值

make:返回創(chuàng)建的對象,類型為所創(chuàng)建的引用類型。new:返回創(chuàng)建對象的指針,類型為指向所創(chuàng)建對象類型的指針。

八、錯誤處理

make:在運行時對于slice、map和channel類型,如果長度參數(shù)為負值,或者其他參數(shù)出現(xiàn)不合法情況,會引發(fā)運行時錯誤。new:new不會進行運行時錯誤處理,只進行零值內存分配。

延伸閱讀

Go語言的特點

簡潔易用:Go語言擁有清晰簡潔的語法,易于學習和使用。它摒棄了一些冗余的語法元素,使得代碼更加簡明和易讀。并發(fā)支持:Go語言內置了輕量級的并發(fā)機制,即Go協(xié)程(goroutine)和通道(channel)。開發(fā)者可以輕松地使用這些特性來編寫高效的并發(fā)代碼,實現(xiàn)并發(fā)編程和并行計算。高性能:Go語言的編譯器和運行時環(huán)境針對性能做了優(yōu)化,使得生成的機器碼具有很高的執(zhí)行效率。Go語言還支持垃圾回收(Garbage Collection),減輕了開發(fā)者的內存管理負擔??缙脚_:Go語言可以直接編譯生成獨立的二進制文件,無需依賴外部的運行時庫。這使得Go語言程序可以方便地在不同的操作系統(tǒng)上進行部署和運行,如Windows、Linux、macOS等。內置工具:Go語言附帶了一系列的工具,如格式化工具(gofmt)、文檔生成工具(godoc)、測試工具(go test)等。這些工具能夠提供代碼的一致性、可讀性和可維護性。強大的標準庫:Go語言提供了豐富而強大的標準庫,覆蓋了網絡、文件、數(shù)據庫、加密等各個領域。開發(fā)者可以直接使用這些標準庫來實現(xiàn)各種常見的功能,提高開發(fā)效率。社區(qū)活躍:Go語言擁有一個活躍的社區(qū),提供了豐富的開源庫和框架,以滿足不同需求的開發(fā)。Go語言的社區(qū)還積極參與討論和改進,推動了Go語言生態(tài)系統(tǒng)的發(fā)展。
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業(yè)內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT