Rumah >pembangunan bahagian belakang >Golang >Analisis mekanisme lulus rujukan dalam bahasa Go
Mekanisme hantaran berubah dalam bahasa Go dibahagikan kepada hantaran nilai dan hantaran rujukan. Melepasi nilai mencipta salinan pembolehubah baharu, manakala lulus melalui rujukan terus beroperasi pada alamat memori pembolehubah asal. Khususnya: pemindahan nilai: mekanisme lalai, perubahan kepada pembolehubah asal tidak menjejaskan pembolehubah baharu. Lulus dengan rujukan: Dengan menggunakan penunjuk, perubahan kepada pembolehubah baharu ditunjukkan dalam pembolehubah asal. Kes praktikal: Menggunakan penunjuk sebagai parameter fungsi, nilai pembolehubah boleh diubah suai di luar fungsi. Nota: Mengubah suai pembolehubah rujukan akan menjejaskan semua pembolehubah yang menunjuk ke alamat memori yang sama Pastikan penunjuk menunjuk ke alamat yang sah dan elakkan menggunakan hantaran nilai dan hantaran rujukan pada masa yang sama.
Dalam bahasa Go, pembolehubah boleh diluluskan mengikut nilai atau rujukan. Melepasi nilai mencipta pembolehubah baharu yang mempunyai nilai yang sama dengan pembolehubah asal, tetapi ia wujud secara bebas. Melewati rujukan akan terus beroperasi pada alamat memori pembolehubah asal, dan perubahan kepada pembolehubah baharu juga akan ditunjukkan dalam pembolehubah asal.
Lulus nilai ialah mekanisme hantaran lalai dalam bahasa Go. Dalam pemindahan nilai, pembolehubah baharu akan mendapat salinan pembolehubah asal, dan sebarang perubahan pada pembolehubah asal tidak akan menjejaskan pembolehubah baharu.
package main import "fmt" func main() { x := 10 y := x // y将会得到x的副本 x++ // 更改x不会影响y fmt.Println(x, y) // 输出:11 10 }
Dalam bahasa Go, lulus melalui rujukan boleh dicapai dengan menggunakan penunjuk. Penunjuk menyimpan alamat pembolehubah dalam ingatan, bukan nilai pembolehubah.
package main import "fmt" func main() { x := 10 y := &x // y指向x的内存地址 *y++ // 更改*y会更改x的值 fmt.Println(x, *y) // 输出:11 11 }
Dalam contoh di atas, pengubahsuaian *y
会取消指针引用,获取指针指向的变量。对*y
的操作实际上就是对x
.
Dalam bahasa Go, hantaran rujukan biasanya digunakan apabila pembolehubah luaran sesuatu fungsi perlu diubah suai. Contohnya, menggunakan penunjuk sebagai parameter fungsi boleh menukar nilai pembolehubah di luar fungsi:
package main import "fmt" func increment(p *int) { *p++ // 解引用指针并递增其值 } func main() { x := 10 increment(&x) // 将x的地址作为参数传递给函数 fmt.Println(x) // 输出:11 }
Apabila menggunakan pemindahan rujukan, anda perlu memberi perhatian kepada perkara berikut:
Atas ialah kandungan terperinci Analisis mekanisme lulus rujukan dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!