Myślę, że rozumiem odpowiedź z here, ale na wszelki wypadek chcę jednoznacznie zapytać o następujące rzeczy (moje przeprosiny, jeśli uważasz, że jest to to samo pytanie, ale dla mnie, czuje się inaczej w sprawie obaw):Kopiowanie odniesienia do wskaźnika lub według wartości
func f() *int {
d := 6
pD := new(int)
pD = &d // option 1
*pD = d // option 2
return pD
}
pierwsza opcja, gdzie po prostu skopiować odwołanie jako wskaźnik wydajności jest mądry, bardziej optymalny (to przypuszczenie edukacyjnych, ale wydaje się oczywiste). Wolałbym tę metodę/wzór.
Druga opcja to (płytka) kopia (?). Przypuszczam, że ta metoda, ponieważ kopiuje, nie mam obawy o GC zamiatanie instancji "d". Często używam tej metody ze względu na moją niepewność (lub ignorancję jako początkującą).
To, czym się martwię (lub bardziej niepewnie) polega na tym, że w pierwszej metodzie (gdzie adres "d" zostanie przeniesiony), GC rozpozna, że (zmienna "d") jest wskaźnik pojemnika, więc nie będzie zamiatać? W związku z tym bezpieczne będzie korzystanie z tej metody zamiast? To znaczy. mogę bezpiecznie przekazać wskaźnik "pD" zwrócony z func 'f()' przez cały czas trwania aplikacji?
referencyjny: https://play.golang.org/p/JWNf5yRd_B