循环循环,当我通过函数递增i
时,但不通过i++
递增循环。
package main
import "fmt"
func increment(i int) (int) {
i++
return i
}
func condition_true(i int) (bool) {
if i < 10 {
return true
} else {
return false
}
}
func main() {
for i := 1; condition_true(i); increment(i) {
fmt.Println(i)
}
}
答案 0 :(得分:6)
你应该i = increment(i)
。
否则,循环中使用的i
不会被修改。
for i := 1; condition_true(i); i = increment(i) {
fmt.Println(i)
}
那个像你期望的那样有效。
https://play.golang.org/p/dwHbV1iY0_
或者,允许increment
通过接收指向它的指针来修改i
:
func increment(i *int) {
*i++
}
然后在循环中使用它:
for i := 1; condition_true(i); increment(&i) {
fmt.Println(i)
}
答案 1 :(得分:3)
这是因为增量函数实际上并没有改变i值,因为i是通过值传递给函数的。
只需删除for循环中的增量并将其替换为i ++