Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Skop pembolehubah dalam fungsi Golang: pembolehubah tempatan dan pembolehubah global

Skop pembolehubah dalam fungsi Golang: pembolehubah tempatan dan pembolehubah global

王林
王林asal
2024-01-18 09:10:071193semak imbas

Skop pembolehubah dalam fungsi Golang: pembolehubah tempatan dan pembolehubah global

Pembolehubah tempatan dan pembolehubah global dalam fungsi Golang memerlukan contoh kod khusus

Di Golang, skop pembolehubah adalah konsep yang sangat penting. Dalam fungsi, kita sering menemui pembolehubah tempatan dan pembolehubah global. Terdapat beberapa perbezaan antara keduanya dalam skop dan penggunaan Di bawah saya akan memperkenalkannya secara terperinci dan memberikan contoh kod tertentu.

Pembolehubah setempat ialah pembolehubah yang ditakrifkan dalam fungsi dan skopnya terhad kepada fungsi yang dimilikinya. Pembolehubah setempat hanya berfungsi di dalam fungsi dan tidak lagi wujud selepas meninggalkan fungsi. Contohnya:

package main

import "fmt"

func main() {
    var a int = 10 // 局部变量
    var b int = 20 // 局部变量

    fmt.Printf("在main函数中,a=%d, b=%d
", a, b)
    test() // 调用test函数
}

func test() {
    var a int = 5 // 局部变量
    var b int = 15 // 局部变量

    fmt.Printf("在test函数中,a=%d, b=%d
", a, b)
}

Hasil keluaran:

在main函数中,a=10, b=20
在test函数中,a=5, b=15

Seperti yang dapat dilihat daripada hasil keluaran, nilai pembolehubah tempatan a dan b adalah berbeza dalam fungsi utama dan fungsi ujian. Ini kerana ia ditakrifkan dalam fungsi yang berbeza dan tidak akan menjejaskan satu sama lain.

Sepadan dengan pembolehubah tempatan ialah pembolehubah global. Pembolehubah global ialah pembolehubah yang ditakrifkan di luar fungsi dan di dalam pakej, dan boleh digunakan di seluruh pakej. Skop pembolehubah global bermula pada titik di mana ia ditakrifkan dan berterusan ke penghujung pakej. Berikut ialah contoh:

package main

import "fmt"

var a int = 10 // 全局变量

func main() {
    var b int = 20 // 局部变量
    fmt.Printf("在main函数中,a=%d, b=%d
", a, b)
    test() // 调用test函数
}

func test() {
    fmt.Printf("在test函数中,a=%d
", a)
}

Hasil keluaran:

在main函数中,a=10, b=20
在test函数中,a=10

Seperti yang dapat dilihat daripada hasil keluaran, dalam fungsi ujian, walaupun pembolehubah a tidak ditakrifkan, nilai pembolehubah global a masih boleh diakses. Ini kerana pembolehubah global kelihatan di seluruh pakej.

Perlu diingat bahawa jika terdapat pembolehubah tempatan dengan nama yang sama dengan pembolehubah global dalam fungsi tersebut, pembolehubah tempatan akan menimpa nilai pembolehubah global. Contohnya:

package main

import "fmt"

var a int = 10 // 全局变量

func main() {
    var a int = 20 // 局部变量
    fmt.Printf("在main函数中,a=%d
", a)
    test() // 调用test函数
}

func test() {
    fmt.Printf("在test函数中,a=%d
", a)
}

Hasil keluaran:

在main函数中,a=20
在test函数中,a=10

Seperti yang dapat dilihat daripada hasil keluaran, nilai sesuatu yang dicetak dalam fungsi ujian ialah nilai pembolehubah global a, bukan nilai pembolehubah tempatan a.

Ringkasnya, pembolehubah tempatan dan pembolehubah global boleh wujud dalam fungsi di Golang. Skop pembolehubah tempatan terhad kepada dalam fungsi dan tidak lagi wujud selepas meninggalkan fungsi manakala pembolehubah global kelihatan di seluruh pakej dan nilainya boleh diakses oleh mana-mana fungsi. Apabila pembolehubah tempatan dan pembolehubah global mempunyai nama yang sama, pembolehubah tempatan menimpa nilai pembolehubah global. Dalam pengaturcaraan sebenar, kita boleh menggunakan pembolehubah tempatan dan pembolehubah global seperti yang diperlukan untuk mencapai kod yang lebih fleksibel dan boleh diselenggara.

Di atas adalah contoh kod khusus pembolehubah tempatan dan pembolehubah global dalam fungsi Golang. Saya harap ia akan membantu semua orang untuk memahami dan menggunakan pembolehubah tempatan dan pembolehubah global.

Atas ialah kandungan terperinci Skop pembolehubah dalam fungsi Golang: pembolehubah tempatan dan pembolehubah global. 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