Rumah >pembangunan bahagian belakang >Golang >Mengapa Pengkompil Go Saya Menunjukkan Ralat 'Diisytiharkan tetapi Tidak Digunakan' Walaupun Pembolehubah Saya Nampaknya Digunakan?

Mengapa Pengkompil Go Saya Menunjukkan Ralat 'Diisytiharkan tetapi Tidak Digunakan' Walaupun Pembolehubah Saya Nampaknya Digunakan?

Susan Sarandon
Susan Sarandonasal
2024-12-25 10:36:16212semak imbas

Why Does My Go Compiler Show

Diisytiharkan tetapi Tidak Digunakan Ralat dalam Go Compiler

Dalam program Go yang disediakan, pengkompil melaporkan ralat "pembolehubah diisytiharkan dan tidak digunakan" untuk pembolehubah m, err, dan kunci, walaupun pada hakikatnya kod tersebut nampaknya menggunakannya. Ini boleh mengelirukan kerana ia kelihatan seperti percanggahan.

Dalam kod asal:

func img() { ... }

Pembolehubah m dan err diisytiharkan dalam skop pernyataan if. Ini bermakna bahawa mereka hanya boleh dilihat dalam cabang pelaksanaan tertentu itu dan tidak boleh digunakan di luarnya. Akibatnya, pengkompil membenderakannya sebagai diisytiharkan tetapi tidak digunakan.

Untuk menyelesaikan masalah ini, pembolehubah m dan ralat perlu diisytiharkan dalam skop fungsi, sebelum pernyataan if. Ini akan menjadikannya kelihatan di seluruh fungsi dan membolehkannya digunakan seperti yang dimaksudkan.

Begitu juga, pembolehubah utama diisytiharkan dalam fungsi tetapi tidak pernah digunakan. Ini boleh dialih keluar untuk menangani amaran pengkompil.

Kod berikut menukar skop pembolehubah m dan err dan mengalih keluar pembolehubah kunci yang tidak digunakan:

func img() {
  var m Image
  key := datastore.NewKey("Comparison", r.FormValue("id"), 0, nil)

  ... // Rest of the code unchanged
}

Dengan perubahan ini, pengkompil amaran harus diselesaikan.

Atas ialah kandungan terperinci Mengapa Pengkompil Go Saya Menunjukkan Ralat 'Diisytiharkan tetapi Tidak Digunakan' Walaupun Pembolehubah Saya Nampaknya Digunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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