Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengisytiharkan Pembolehubah dalam Pernyataan Bersyarat dalam Go?

Bagaimana untuk Mengisytiharkan Pembolehubah dalam Pernyataan Bersyarat dalam Go?

Susan Sarandon
Lepaskan: 2024-11-09 15:37:02
asal
547 orang telah melayarinya

How to Declare Variables in Conditional Statements in Go?

Skop Pembolehubah dalam Go: Mengisytiharkan Pembolehubah dalam Pernyataan Bersyarat

Soalan:

Semasa belajar Go, seorang pembangun bergelut untuk mengisytiharkan pembolehubah dalam pernyataan if...else, menghadapi ralat yang menunjukkan bahawa pembolehubah telah diisytiharkan tetapi tidak digunakan. Bagaimanakah isu ini boleh diselesaikan?

Jawapan:

Dalam Go, skop pembolehubah dihadkan kepada blok di mana ia diisytiharkan. Oleh itu, mengisytiharkan pembolehubah di dalam pernyataan bersyarat hanya menjadikannya boleh diakses dalam blok khusus itu.

Untuk memahami konsep ini, pertimbangkan contoh berikut:

package main

import "fmt"

func main() {
    a := 1
    fmt.Println(a) // 1
    {
        a := 2
        fmt.Println(a) // 2
    }
    fmt.Println(a) // 1
}
Salin selepas log masuk

Dalam contoh ini, pembolehubah a diisytiharkan dua kali: sekali di luar dan sekali di dalam blok. Pengisytiharan pertama (a := 1) adalah sah untuk keseluruhan fungsi utama, manakala pengisytiharan kedua (a := 2) hanya sah dalam blok.

Tingkah laku ini adalah analog dalam pernyataan bersyarat:

if strings.EqualFold(r.Method, "GET") || strings.EqualFold(r.Method, "") {
    req, er := http.NewRequest(r.Method, r.Uri, b)
} else {
    req, er := http.NewRequest(r.Method, r.Uri, b)
}

if er != nil {
    // Do something...
}
Salin selepas log masuk

Dalam contoh ini, pembolehubah req dan er diisytiharkan dalam cawangan if dan else, masing-masing. Walau bagaimanapun, apabila atur cara keluar dari blok ini, pembolehubah tidak lagi boleh diakses.

Untuk menyelesaikan isu ini, isytiharkan pembolehubah di luar pernyataan bersyarat dan gunakan operator tugasan (=) untuk mengubah suai nilainya:

var req *http.Request
var er error
if strings.EqualFold(r.Method, "GET") || strings.EqualFold(r.Method, "") {
    req, er = http.NewRequest(r.Method, r.Uri, b)
} else {
    req, er = http.NewRequest(r.Method, r.Uri, b)
}

if er != nil {
    // Do something...
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengisytiharkan Pembolehubah dalam Pernyataan Bersyarat dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan