簡體   English   中英

什么應該使用New()或var in go?

[英]what should be used New() or var in go?

如何為結構創建對象?

object := new(struct)

要么

var object struct

我無法理解什么時候使用什么? 如果兩者相同哪一個應該優先?

您顯示的new語法返回指針,而另一個是值。 看看這篇文章; https://golang.org/doc/effective_go.html#allocation_new

實際上甚至還有一個我更喜歡的選擇。 它被稱為復合文字,看起來像這樣;

object := &struct{}

上面的例子相當於你使用new 關於它的很酷的事情是你可以在括號內的struct指定任何屬性的值。

何時使用您需要根據具體情況做出的決定。 在Go中,有幾個原因我想要一個或另一個; 也許只有指針*myType實現了一些接口,而myType沒有, myType實例可能包含大約1 GB的數據,你想確保傳遞一個指針,而不是將值傳遞給其他方法,等等。 選擇使用哪個取決於用例。 雖然我會說,指針很少更糟,因為在這種情況下我幾乎總是使用它們。

當你需要一個指針對象時,使用new或composite literal,否則使用var。

盡可能使用var,因為這更有可能在堆棧中分配,並且一旦作用域結束就會釋放內存。 我最有可能在堆中分配新內存,需要進行垃圾回收。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM