我是 Go 語言的新手,并且只有很少的 C/C++ 背景,所以我很自然地在思考何時使用指針和何時不使用指針的想法。盡管這個問題可能被認為是開放式的,但我想知道關于何時返回結構和何時返回指針的一些指導原則(以及何時接受結構/指針作為參數)。據我所知,以下陳述是正確的:結構按值傳遞給函數。也就是說,在將結構傳遞給函數時,會對其進行復制。如果我想通過引用傳遞結構,那么我會在函數定義中使用指針參數,并在調用函數時使用 addressof 運算符。我想通過引用傳遞結構的原因是因為我傳遞的結構很大,并且按值傳遞它會占用內存(不太可能)或者如果我想對復制我傳入的(更有可能)。作為 3.) 的推論,我應該通過值傳遞,除非我有上述原因之一通過引用傳遞。我的假設正確嗎?還是我錯過了指針上的標記?
1 回答

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
你的假設是正確的。關于 #3,Go 是并發語言,在 goroutine 中通過引用傳遞使它們都讀取相同的結構,這是安全的,但也會使它們修改相同的結構,這是危險的。
- 1 回答
- 0 關注
- 162 瀏覽
添加回答
舉報
0/150
提交
取消