私はhereからの回答を理解していると思いますが、私は明示的に以下について尋ねたいと思います(同じ質問だと思うと私の謝罪ですが、私には違う感じです)の懸念に:ポインタへの参照または値のコピー
func f() *int {
d := 6
pD := new(int)
pD = &d // option 1
*pD = d // option 2
return pD
}
ポインタが性能面であるように私はただの参照をコピーし、最初のオプション、より最適な(これは教育の推測ですが、それは明白なようです)。私はこの方法/パターンを好むだろう。
2番目のオプションは代わりに(浅い)コピー(?)です。私が推測しているのは、このメソッドは、コピーするので、私はGCが 'd'のインスタンスをスイープすることについて懸念していません。私はしばしば私の不安(または初心者としての無知)のためにこの方法を使用します。
私が心配しているのは、最初の方法( 'd'のアドレスが転送される)でGCがそれ( 'd'変数)がポインタコンテナなので、それは掃引されませんか?したがって、代わりにこのメソッドを使用するのが安全でしょうか?私。アプリケーションの存続期間中、func 'f()'から返されたポインタ 'pD'を安全に渡すことはできますか?
参考:https://play.golang.org/p/JWNf5yRd_B要するに