问题
I'm developing in golang and I run the following for loop:
// Define Initial Value
i := 0
for {
// Get Random data based on iteration
data, i := GiveRandomData(i)
// Save to database
response, err := SaveToDatabase(data)
if err != nil { log.Fatal(err) }
fmt.Println(response)
}
However, when compiling this program, I get the following error:
.\main.go:26: i declared and not used
The Golang compiler doesn't seem to recognise that the i variable is given back to the function in the next loop. Inside this function, the I variable changes value.
What should I do to get rid of this compilation error or to let golang understand that this variable is NOT unused but used in the next iteration of this endless for loop?
回答1:
The Golang compiler doesn't seem to recognise that the i variable is given back to the function in the next loop. Inside this function, the I variable changes value.
No, i
does not change value; :=
declares a new i
. (Go allows you to do this because data
is also new.) To assign to it instead, you’ll need to declare data
separately:
var data RandomDataType
data, i = GiveRandomData(i)
Or give the new i
a temporary name:
data, next := GiveRandomData(i)
i = next
来源:https://stackoverflow.com/questions/45137897/use-of-variable-in-for-loop-not-recognized-in-golang