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

Mary-Kate Olsen
Lepaskan: 2024-10-31 20:14:02
asal
165 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!