Pelulusan parameter fungsi GoLang menggunakan mekanisme nilai pas-demi-pengubahsuaian parameter jenis nilai tidak menjejaskan parameter sebenar, manakala pengubahsuaian parameter jenis rujukan akan mempengaruhi parameter penunjuk sebenar membolehkan akses tidak langsung dan pengubahsuaian yang sebenar parameter.
Parameter passing dalam fungsi GoLang
Pengenalan
Dalam GoLang, parameter passing mengikut mekanisme pass-by-value. Ini bermakna sebarang perubahan yang dibuat pada parameter di dalam fungsi tidak akan menjejaskan parameter sebenar di luar fungsi.
Jenis parameter
Parameter fungsi GoLang boleh menjadi jenis nilai atau jenis rujukan.
Jenis nilai
Untuk parameter jenis nilai, sebarang pengubahsuaian pada parameter di dalam fungsi tidak akan menjejaskan parameter sebenar. Ini kerana semasa panggilan fungsi, salinan parameter dibuat.
func swap(a, b int) { a, b = b, a // 在函数内交换 a 和 b 的副本 } func main() { x := 5 y := 7 swap(x, y) fmt.Println(x, y) // 输出 5 7 }
Jenis rujukan
Untuk parameter jenis rujukan, pengubahsuaian pada parameter di dalam fungsi akan menjejaskan parameter sebenar. Ini kerana fungsi tersebut beroperasi secara langsung pada data sebenar.
func swap(a, b []int) { a[0], b[0] = b[0], a[0] // 交换切片的第一个元素 } func main() { x := []int{5} y := []int{7} swap(x, y) fmt.Println(x, y) // 输出 [7] [5] }
Penunjuk
Jenis penuding menyediakan mekanisme untuk akses tidak langsung kepada nilai. Apabila menghantar jenis rujukan melalui penuding, parameter sebenar boleh diubah suai.
func swap(a, b *int) { *a, *b = *b, *a // 交换指针指向的值 } func main() { x := 5 y := 7 swap(&x, &y) fmt.Println(x, y) // 输出 7 5 }
Kes praktikal
Berikut ialah kes praktikal menggunakan lulus parameter fungsi:
type Book struct {
Atas ialah kandungan terperinci Parameter passing dalam fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!