Rumah >pembangunan bahagian belakang >Golang >Mengapa Adakah Go Throw \'sebelum diisytiharkan dan tidak digunakan\' Ralat Walaupun Permulaan Pembolehubah?

Mengapa Adakah Go Throw \'sebelum diisytiharkan dan tidak digunakan\' Ralat Walaupun Permulaan Pembolehubah?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 03:37:01995semak imbas

Why Does Go Throw

Go - Ralat: "sebelumnya diisytiharkan dan tidak digunakan", Walaupun Permulaan Boleh Ubah

Dalam Go, menghadapi ralat "prev declared and not digunakan" apabila pembolehubah kelihatan dimulakan boleh membingungkan. Mari kita periksa kes tertentu:

<code class="go">package main

import "fmt"

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>

Isunya terletak pada fungsi tanpa nama dalaman dalam fibonacci(). Kod mengisytiharkan pembolehubah prev, yang dibayangi oleh tugasan := berikutnya. Ini mencipta pembolehubah tempatan baharu yang tidak digunakan, mencetuskan ralat "prev declared and not used".

Resolusi:

Untuk menyelesaikan masalah ini, ubah suai : = tugasan kepada =. Ini memberikan nilai temp kepada pembolehubah prev yang diwarisi:

<code class="go">prev = temp</code>

Begitu juga, baris seterusnya hendaklah:

<code class="go">curr = curr + prev</code>

Ini memastikan prev digunakan dengan betul dan ralat diselesaikan .

Atas ialah kandungan terperinci Mengapa Adakah Go Throw \'sebelum diisytiharkan dan tidak digunakan\' Ralat Walaupun Permulaan Pembolehubah?. 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