Rumah >pembangunan bahagian belakang >Golang >Mengapa Pembolehubah Go Saya Tidak Ditakrifkan, dan Bagaimana Saya Boleh Membetulkannya?
Memahami Pembolehubah Tidak Ditakrifkan dalam Go
Apabila cuba menyusun atur cara Go anda, anda mengalami ralat "undefined err" dan "undefinded user. " Ini boleh membingungkan, terutamanya untuk pemula yang menavigasi nuansa bahasa.
Isu ini timbul daripada skop pembolehubah terhad yang diisytiharkan dalam blok. Dalam kod asal anda, anda mengisytiharkan "err" dan "user" di dalam blok if-else. Walau bagaimanapun, pembolehubah ini hanya boleh dilihat dalam blok tertentu itu. Apabila anda cuba mengaksesnya di luar blok, pengkompil mengadu kerana ia tidak ditentukan.
Begini cara skop pembolehubah berfungsi dalam Go:
Untuk menyelesaikan isu ini, alihkan pengisytiharan "err" dan "pengguna" di luar blok if-else, memastikan ia mempunyai kesahan sepanjang fungsi. Anda boleh melakukan ini dengan mengisytiharkannya sebelum pernyataan if, contohnya:
var err error var user core.User if req.Id == nil { user, err = signup(C, c, &req) } else { user, err = update(C, c, &req) }
Ini memastikan bahawa "err" dan "user" ditakrifkan sebelum penggunaannya dan tersedia dalam blok kod berikutnya.
Dalam kod anda yang dikemas kini, anda memperkenalkan satu lagi isu pengisytiharan berubah-ubah. Menggunakan pengisytiharan pembolehubah pendek pengguna := core.User{} dalam blok if mencipta pembolehubah baharu yang tidak kelihatan di luar blok itu. Akibatnya, pengkompil mengadu bahawa "pengguna" yang diisytiharkan di luar blok tidak digunakan.
Untuk menyelesaikan masalah ini, alihkan pengisytiharan "pengguna" sebelum blok if dan gunakan operator tugasan:
user := core.User{} if req.Id == nil { user, err = signup(C, c, &req) } else { user, err = update(C, c, &req) }
Sebagai alternatif, anda boleh menggunakan satu baris untuk mengisytiharkan kedua-dua "pengguna" dan "err" dan memulakannya dengan lalai nilai:
user, err := core.User{}, error(nil)
Dengan memahami skop pembolehubah dalam Go, anda boleh mengelakkan ralat kompilasi biasa ini dan menulis kod yang lebih cekap dan boleh diselenggara.
Atas ialah kandungan terperinci Mengapa Pembolehubah Go Saya Tidak Ditakrifkan, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!