Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk lulus pelbagai jenis parameter dalam golang

Bagaimana untuk lulus pelbagai jenis parameter dalam golang

PHPz
PHPzasal
2024-04-23 08:36:02447semak imbas

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.

Bagaimana untuk lulus pelbagai jenis parameter dalam golang

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn