Kelebihan dan kegunaan penunjuk Golang, supaya anda lebih memahami, contoh kod khusus diperlukan
Dalam bahasa Go, penunjuk ialah jenis data khas yang menyimpan alamat memori pembolehubah. Dengan menggunakan penunjuk, kita boleh mengendalikan memori secara langsung di mana pembolehubah berada, dan kemudian merujuk dan mengubah suai pembolehubah. Berbanding dengan bahasa pengaturcaraan lain, penunjuk bahasa Go mempunyai beberapa kelebihan dan kegunaan unik. Artikel ini akan menggunakan contoh kod khusus untuk membantu kami memahami dengan lebih baik kelebihan dan penggunaan penunjuk dalam bahasa Go.
Dalam lulus parameter fungsi atau kaedah, jika objek besar dilalui terus, ia akan menyebabkan overhed menyalin keseluruhan objek, terutamanya dalam panggilan rekursif atau gelung. Apabila menghantar penunjuk sebagai parameter, anda hanya perlu menghantar alamat memori, mengelakkan overhed penyalinan objek. Dalam contoh kod berikut, kami mentakrifkan jenis struktur Orang, yang mengandungi dua medan: nama dan umur. Kami mentakrifkan fungsi modifyByPointer, menggunakan penunjuk sebagai parameter untuk mengubah suai objek Orang yang diluluskan.
package main import "fmt" type Person struct { name string age int } func modifyByPointer(p *Person) { p.name = "Alice" p.age = 30 } func main() { p := Person{"Bob", 25} modifyByPointer(&p) fmt.Println(p) }
Hasil larian ialah:
{Alice 30}
Anda boleh melihat bahawa fungsi modifyByPointer mengubah suai objek Orang yang dilalui melalui penuding, tanpa menyalin keseluruhan objek, dengan itu mengelakkan operasi penyalinan objek yang mahal.
Dalam bahasa Go, gunakan kata kunci baharu
untuk memperuntukkan ruang memori secara dinamik untuk jenis dan mengembalikan penunjuk jenis. Dalam contoh kod berikut, kami menggunakan new
untuk memperuntukkan memori secara dinamik bagi pembolehubah integer dan menetapkannya kepada penunjuk p. new
可以动态地为类型分配一片内存空间,并返回该类型的指针。接下来的代码示例中,我们使用new
来动态分配一个整型变量的内存,并将其赋值给指针p。
package main import "fmt" func main() { p := new(int) *p = 10 fmt.Println(*p) }
运行结果是:
10
可以看到,通过使用new
package main import "fmt" func swap(a *int, b *int) { tmp := *a *a = *b *b = tmp } func main() { x, y := 10, 20 swap(&x, &y) fmt.Println(x, y) }
20 10
new
, kami memperuntukkan memori secara dinamik untuk pembolehubah integer dan mengakses serta mengubah suai ruang memori melalui nilai p penunjuk. Fungsi mengembalikan berbilang hasil
Dalam bahasa Go, fungsi boleh mengembalikan berbilang hasil. Penunjuk sangat berguna apabila fungsi kembali Anda boleh mengubah suai nilai pembolehubah luaran melalui penunjuk di dalam fungsi, dengan itu mencapai berbilang hasil pulangan. Dalam contoh kod berikut, kami mentakrifkan pertukaran fungsi untuk mengubah suai dua pembolehubah integer yang dihantar melalui penunjuk.rrreee
Hasil larian ialah:rrreee
Seperti yang anda lihat, dengan menggunakan penunjuk di dalam fungsi, kami berjaya menukar nilai x dan y. 🎜🎜Ringkasnya, penunjuk dalam bahasa Go mempunyai kelebihan dan kegunaan memindahkan objek besar dengan overhed yang kurang, memperuntukkan memori secara dinamik dan fungsi mengembalikan berbilang hasil. Dengan menggunakan penunjuk dengan betul, kami boleh mengurus memori dengan lebih baik dan meningkatkan prestasi dan kecekapan program. Saya harap contoh kod di atas dapat membantu semua orang memahami dan menggunakan petunjuk dengan lebih baik dalam bahasa Go. 🎜Atas ialah kandungan terperinci Fahami kelebihan dan kegunaan penunjuk Golang dan tingkatkan pengetahuan anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!