Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mengisytiharkan Pembolehubah dalam Pernyataan Bersyarat dalam 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 }
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... }
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... }
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!