Rumah >pembangunan bahagian belakang >Golang >Parameter passing dalam fungsi golang

Parameter passing dalam fungsi golang

WBOY
WBOYasal
2024-04-28 18:39:02647semak imbas

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

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: Integer, titik terapung, Boolean, rentetan dan jenis asas lain.
  • Jenis rujukan: Jenis seperti tatasusunan, kepingan, struktur, penunjuk, dll. yang merujuk kepada data sebenar.

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!

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