Terdapat dua cara untuk menghantar parameter fungsi dalam Go: lulus mengikut nilai dan lulus dengan rujukan. Melepasi nilai mencipta salinan parameter, dan perubahan pada salinan tidak menjejaskan nilai asal melalui rujukan mencipta alias, dan perubahan pada salinan ditunjukkan dalam nilai asal. Amalan terbaik termasuk: menggunakan fungsi penerima penunjuk untuk mengubah suai keadaan boleh ubah;
Amalan dan corak terbaik industri untuk lulus parameter fungsi dalam Go
Dalam Go, parameter fungsi diluluskan mengikut nilai atau rujukan. Memahami kedua-dua mekanisme ini dan kesannya adalah penting untuk menulis kod yang mantap dan cekap.
Pass by value
Pass by value mencipta salinan parameter, bermakna sebarang perubahan yang dibuat pada salinan tidak akan menjejaskan nilai asal. Gunakan func(t int)
untuk mengisytiharkan fungsi yang menerima nilai sebagai parameter, contohnya: func(t int)
声明接受值作为参数的函数,例如:
func square(x int) int { return x * x }
按引用传递
按引用传递创建参数的别名,这意味着对副本所做的任何更改都会反映在原始值中。使用 func(t *int)
声明接受指针作为参数的函数,例如:
func increment(p *int) { *p++ }
最佳实践和模式
实战案例
考虑一个函数 swap()
func swapByValue(x, y int) { temp := x x = y y = temp } func main() { a := 1 b := 2 swapByValue(a, b) fmt.Println(a, b) // 输出:1 2 }
Pass by reference
🎜🎜Pass by reference mencipta alias untuk parameter, yang bermaksud bahawa apa-apa yang dilakukan pada salinan Perubahan ditunjukkan dalam nilai asal. Gunakanfunc(t *int)
untuk mengisytiharkan fungsi yang menerima penunjuk sebagai parameter, contohnya: 🎜func swapByReference(x, y *int) { temp := *x *x = *y *y = temp } func main() { a := 1 b := 2 swapByReference(&a, &b) fmt.Println(a, b) // 输出:2 1 }
swap()
untuk menukar dua integer. Melepasi nilai menghasilkan dua salinan tanpa mengubah suai nilai asal: 🎜rrreee 🎜 Melewati rujukan mengubah suai nilai asal: 🎜rrreeeAtas ialah kandungan terperinci Amalan dan corak terbaik industri untuk lulus parameter fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!