Ralat: Pengisytiharan Pembolehubah Di Dalam Pernyataan Bersyarat
Apabila mula-mula menemui Go, anda mungkin mengalami kekeliruan mengenai pengisytiharan berubah dalam pernyataan bersyarat (cth., jika -lain). Isu ini timbul apabila pembolehubah (cth., req, er) diisytiharkan dan ditugaskan di dalam blok bersyarat.
Skop Pembolehubah: Memahami Tahap Blok
Dalam Go, pembolehubah ialah ditakrifkan dalam skop tertentu, yang terhad kepada blok yang diisytiharkan masuk. Pertimbangkan perkara berikut contoh:
package main import "fmt" func main() { a := 1 fmt.Println(a) { // New scope a := 2 fmt.Println(a) } fmt.Println(a) // Prints 1 }
Output menunjukkan bahawa menetapkan semula nilai a dalam skop bersarang tidak menjejaskan nilainya di luar skop tersebut. Ini kerana a diisytiharkan secara setempat dalam skop dalaman, mencipta kejadian baharu bagi pembolehubah, serupa dengan:
var a int = 1 var b int = 2 fmt.Println(a) fmt.Println(b)
Menggunakan Konsep pada Pernyataan Bersyarat
Apabila cuba mengisytiharkan pembolehubah dalam pernyataan bersyarat:
if condition { var req *http.Request var er error }
Anda akan menghadapi ralat menyatakan "req diisytiharkan dan tidak digunakan" atau "diisytiharkan dan tidak digunakan" kerana pembolehubah hanya boleh dilihat dalam blok pernyataan bersyarat.
Penyelesaian: Istiharkan Pembolehubah Di Luar Blok Bersyarat
Untuk menyelesaikan isu ini, pembolehubah hendaklah diisytiharkan di luar blok bersyarat:
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) }
Dengan melakukan jadi, pembolehubah tersedia di seluruh fungsi, memastikan ia dimulakan dengan betul. Ingat, skop pembolehubah adalah penting dalam Go untuk mengekalkan kejelasan kod dan mencegah tingkah laku yang tidak dijangka.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengisytiharkan Pembolehubah Di Dalam Penyata Bersyarat dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!