Rumah >pembangunan bahagian belakang >Golang >Mengapa Adakah Go Throw \'sebelum diisytiharkan dan tidak digunakan\' Ralat Walaupun Permulaan Pembolehubah?
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!