Return Pointer kepada Local Struct in Go
In Go, binaan seperti ini digunakan untuk mencipta dan mengembalikan penunjuk ke local struct :
type point struct { x, y int } func newPoint() *point { return &point{10, 20} }
Walaupun ini mungkin kelihatan seperti amalan yang salah dalam C , semantik dalam Go ialah berbeza.
Analisis Melarikan Penunjuk dan Peruntukan Memori
Go menggunakan analisis melarikan diri penuding untuk menentukan sama ada penuding terlepas daripada skop tindanan setempat. Dalam contoh di atas, penunjuk yang dikembalikan oleh newPoint() sememangnya terlepas daripada fungsi setempat. Akibatnya, objek diperuntukkan pada timbunan.
Walau bagaimanapun, jika penuding kekal dalam skop fungsi (iaitu, ia tidak terlepas), pengkompil mempunyai kebebasan untuk memperuntukkan objek pada timbunan. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ini tidak dijamin oleh pengkompil.
Oleh itu, peruntukan memori bergantung pada sama ada analisis melarikan diri penunjuk secara jelas boleh membuat kesimpulan bahawa penuding kekal setempat kepada fungsi tersebut. Dalam kes di mana penuding terlepas, seperti dalam contoh yang disediakan, objek diperuntukkan pada timbunan.
Atas ialah kandungan terperinci Bagaimanakah Go Mengendalikan Penunjuk Kembali ke Struktur Setempat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!