Mengapa "ada" Menyebabkan Ralat "Nama Tidak Diisytiharkan" Semasa Menaik taraf ke Go 1.18?
Apabila menaik taraf projek Go anda kepada versi 1.18 dan cuba memanfaatkan jenis "mana-mana" baharu sebagai pengganti "antara muka{}", anda mungkin menghadapi ralat yang serupa kepada:
undeclared name: any (requires version go1.18 or later)
Ralat ini timbul kerana fail "go.mod" yang dikaitkan dengan projek anda menentukan versi Go kurang daripada 1.18. Jenis "mana-mana" telah diperkenalkan dalam Go 1.18 dan modul yang menyatakan versi terdahulu tidak layak untuk menggunakannya.
Resolusi
Untuk menyelesaikan isu ini, kemas kini " go.mod" untuk menggunakan Go versi 1.18 ke atas. Sebagai contoh, tukar perkara berikut:
module example.com/foo go 1.17
kepada:
module example.com/foo go 1.18
Justifikasi
Fail "go.mod" setiap modul mengawal Versi bahasa Go yang digunakan semasa penyusunan, membenarkan penggunaan ciri baharu secara beransur-ansur oleh pengarang modul mengikut budi bicara mereka. Seperti yang dijelaskan dalam [dokumen reka bentuk perubahan bahasa Go](https://go.dev/design/go-version-check), ini memastikan keserasian merentas komponen dan modul.
Atas ialah kandungan terperinci Mengapa Go 1.18 Menghasilkan Ralat 'Nama Tidak Diisytiharkan: sebarang'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!