Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Kod My Go Melaporkan Ralat \"Diisytiharkan dan Tidak Digunakan\" pada Pembolehubah `sebelumnya` Walaupun Penggunaannya?

Mengapa Kod My Go Melaporkan Ralat \"Diisytiharkan dan Tidak Digunakan\" pada Pembolehubah `sebelumnya` Walaupun Penggunaannya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 20:14:02148semak imbas

Why Does My Go Code  Report a

Ralat Diisytiharkan dan Tidak Digunakan dalam Go, Walaupun Penggunaan Pembolehubah

Dalam kod Go berikut, pengkompil melaporkan ralat "diisytiharkan dan tidak digunakan" pada pembolehubah sebelumnya.

<code class="go">package main

import "fmt"

// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
    prev := 0
    curr := 1
    return func() int {
        temp := curr
        curr := curr + prev
        prev := temp
        return curr
    }
}

func main() {
    f := fibonacci()
    for i := 0; i < 10; i++ {
        fmt.Println(f())
    }
}</code>

Memahami Ralat

Pengkompil dengan betul mengenal pasti bahawa pembolehubah sebelumnya diisytiharkan tetapi tidak digunakan. Ini bermakna pembolehubah prev yang diisytiharkan dalam fungsi fibonacci tidak pernah dirujuk dalam kod.

Menyelesaikan Isu

Ralat boleh diselesaikan dengan mengubah suai fungsi fibonacci untuk menggunakan pembolehubah terdahulu dengan betul. Niat kod berkemungkinan mengubah suai pembolehubah prev dengan prev := temp assignment. Walau bagaimanapun, tugasan ini mencipta pembolehubah tempatan baharu bernama prev yang disembunyikan daripada skop sekeliling. Sebaliknya, tugasan yang betul harus menggunakan operator = tanpa kata kunci pengisytiharan:

<code class="go">func fibonacci() func() int {
    prev := 0
    curr := 1
    return func() int {
        temp := curr
        curr := curr + prev
        prev = temp
        return curr
    }
}</code>

Dengan mengalih keluar kata kunci pengisytiharan (:=) daripada tugasan sebelumnya kedua, kod tersebut mengubah suai pembolehubah terdahulu yang diwarisi dengan betul. Ini menyelesaikan ralat pengkompil dan membenarkan kod berfungsi seperti yang dimaksudkan.

Atas ialah kandungan terperinci Mengapa Kod My Go Melaporkan Ralat \"Diisytiharkan dan Tidak Digunakan\" pada Pembolehubah `sebelumnya` Walaupun Penggunaannya?. 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