16
我是Go語言的新手,並且在C/C++中只有很少的背景,所以很自然地我正在努力使用指針以及何時不使用指針。儘管這個問題可能被認爲是開放式的,但我想知道什麼時候返回結構體以及何時返回指針(以及等價地接受結構體/指針作爲參數)的一些指導原則。Golang:什麼時候使用指針
從我可以猜到,下列說法成立:
- 結構是按值傳遞給函數。也就是說,在將結構傳遞給函數時會創建一個結構的副本。
- 如果我想通過引用傳遞一個結構體,那麼我會在函數定義中使用一個指針參數,並在調用該函數時使用addressof運算符。
- 我想要通過引用傳遞一個結構的原因是因爲我傳入的結構很大,並且它會通過值(不太可能)將它傳遞給內存,或者如果我想使更改我傳入的副本(更可能)。
- 作爲3)的必然結果,我應該通過價值,除非我有上述原因之一通過參考。
我的假設是否正確?或者我錯過了指針上的標記?
基本上就是這樣 - 我不知道你問的不只是是或否。 Re:#2,很好記住Go中的所有內容都是按值傳遞的,在這種情況下,您將按值傳遞一個指針。 – JimB
它基本上是一個是/否的問題,但如果它是一個否,那麼我會想知道什麼是錯的。感謝您的輸入。 對於2,是否正確地說,指針是按值傳遞的,但是我們使用該指針來修改它指向的對象,但是如果我們傳入一個結構體(而不是指向該結構體的指針),那麼我們將只能修改副本? –
是的,你是對的 –