Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk lulus pelbagai jenis parameter dalam golang
Kaedah lulus parameter fungsi dalam Go dibahagikan kepada: 1) lulus mengikut nilai (jenis dan struktur asas), 2) lulus melalui rujukan (jenis rujukan dan penunjuk), 3) lulus melalui rujukan mengikut nilai (jarang digunakan). Memilih kaedah penyampaian yang sesuai mempengaruhi prestasi fungsi dan semantik.
Cara menghantar pelbagai jenis parameter dalam Go
Dalam Go, parameter fungsi boleh dihantar dalam pelbagai cara, yang akan mempengaruhi cara fungsi menggunakan parameter ini. Berikut ialah tiga cara biasa untuk menghantar pelbagai jenis parameter dalam Go:
Lewati nilai
Lewati nilai ialah cara yang paling mudah untuk lulus. Dengan cara ini, fungsi mencipta salinan hujah, jadi perubahan pada hujah tidak menjejaskan nilai asal. Jenis primitif (seperti int, float64 dan rentetan) dan struktur diluluskan mengikut nilai. Contohnya:
func inc(n int) { // 创建参数 n 的副本 n++ } func main() { a := 5 inc(a) // a 的值保持为 5,因为 n 是 a 的副本 fmt.Println(a) // 输出:5 }
Lulus dengan rujukan
Lulus dengan rujukan Lulus parameter dengan penunjuk. Fungsi boleh mengubah suai penunjuk kepada parameter, dengan itu secara tidak langsung mengubah suai nilai asal. Jenis rujukan (seperti kepingan, peta dan fungsi) dihantar melalui rujukan. Penunjuk (seperti *int
) juga dihantar melalui rujukan. Contohnya:
func inc(n *int) { // n 是指向原始值 a 的指针 *n++ } func main() { a := 5 inc(&a) // 修改 a 的值 fmt.Println(a) // 输出:6 }
Rujukan lulus mengikut nilai
Rujukan lulus mengikut nilai ialah cara yang tidak biasa untuk lulus, tetapi kadangkala berguna. Dengan cara ini, fungsi mencipta salinan penuding kepada nilai parameter. Contohnya:
func incValueRef(val *float64) { // val 是指向参数值 f 的指针的副本 *val++ } func main() { f := 5.0 incValueRef(&f) // 修改 f 的值 fmt.Println(f) // 输出:6.0 }
Memilih kaedah hantaran yang betul adalah penting kerana ia mempengaruhi prestasi dan semantik fungsi. Melepasi nilai adalah lebih pantas, tetapi lulus melalui rujukan membolehkan fungsi mengubah suai nilai asal. Rujukan lewat memberikan kompromi antara keduanya.
Atas ialah kandungan terperinci Bagaimana untuk lulus pelbagai jenis parameter dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!