Rumah >pembangunan bahagian belakang >Golang >Persamaan dan perbezaan antara nilai lulus dan rujukan lulus dalam Golang

Persamaan dan perbezaan antara nilai lulus dan rujukan lulus dalam Golang

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBasal
2024-04-12 11:03:01891semak imbas

Terdapat dua cara untuk menghantar pembolehubah dalam bahasa Go: penghantaran nilai: salinan pembolehubah diluluskan dan pembolehubah asal tidak terjejas. Lulus dengan rujukan: Lulus alamat pembolehubah, dan fungsi boleh mengakses dan mengubah suai pembolehubah asal.

Persamaan dan perbezaan antara nilai lulus dan rujukan lulus dalam Golang

Persamaan dan perbezaan antara hantaran nilai dan hantaran rujukan dalam bahasa Go

Dalam bahasa Go, terdapat dua cara untuk lulus pembolehubah: hantaran nilai dan hantaran rujukan. Memahami perbezaan antara kedua-duanya adalah penting kerana ia akan mempengaruhi cara anda berkelakuan semasa menulis kod.

Melalui nilai

Apabila pembolehubah diluluskan oleh nilai, salinan pembolehubah dihantar ke fungsi atau kaedah. Ini bermakna pembolehubah asal tidak terjejas oleh sebarang perubahan yang dibuat dalam fungsi.

func changeValue(x int) {
    x = 100
}

func main() {
    a := 5
    changeValue(a)
    fmt.Println(a) // 输出 5,因为原始值没有改变
}

Dalam contoh di atas, fungsi changeValue mengambil int dengan nilai 5 sebagai parameter. Apabila pengubahsuaian dibuat pada parameter ini, ia hanya mengubah suai salinan, bukan pembolehubah asal. changeValue 函数将一个值为 5 的 int 作为参数。当对该参数进行修改时,它只会修改副本,而不会修改原始变量。

引用传递

当以引用方式传递变量时,变量的地址被传递给函数或方法。这意味着函数可以访问并修改原始变量。

使用指针来实现引用传递。指针变量存储变量的地址。如下所示:

func changeReference(x *int) {
    *x = 100
}

func main() {
    a := 5
    changeReference(&a)
    fmt.Println(a) // 输出 100,因为原始值被修改
}

在这个示例中,changeReference 函数接受一个指向整数的指针作为参数。当函数对 *x 进行修改时,它实际上是对指向 a 变量的地址进行修改,从而修改了 a

Melalui Rujukan

Apabila pembolehubah diluluskan melalui rujukan, alamat pembolehubah dihantar ke fungsi atau kaedah. Ini bermakna fungsi itu boleh mengakses dan mengubah suai pembolehubah asal.
  • Gunakan penunjuk untuk lulus melalui rujukan. Pembolehubah penunjuk menyimpan alamat pembolehubah. Seperti yang ditunjukkan di bawah: rrreeeDalam contoh ini, fungsi changeReference menerima penuding kepada integer sebagai parameter. Apabila fungsi mengubah suai *x, ia sebenarnya mengubah suai alamat yang menunjuk kepada pembolehubah a, sekali gus mengubah suai nilai asal a .
  • Ringkasan
🎜🎜 Melewati nilai 🎜: Lulus salinan pembolehubah, pembolehubah asal tidak terjejas oleh perubahan yang dibuat dalam fungsi. 🎜🎜🎜Lulus dengan rujukan🎜: Lulus alamat pembolehubah, dan fungsi boleh mengakses dan mengubah suai pembolehubah asal. 🎜🎜

Atas ialah kandungan terperinci Persamaan dan perbezaan antara nilai lulus dan rujukan lulus 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