请问这段代码为什么没有任何输出?
按理说在 i = 2 和 4 的时候,visit [i] = true, printf 应该打印出 i 。
然而 go run main.go 的结果没有任何输出。
package main
import (
"fmt"
)
func main() {
visit := []bool{false, false, true, false, true, false}
for i := 0; i < len(visit) && visit[i]; i++ {
fmt.Printf("%d\n", i)
}
}
1
Norths 310 天前
数组的第一个不是写的 false 吗
|
2
ClarkAbe 310 天前 via Android
你先去把任意一个语言的循环关键字教程看一遍...
|
3
Ericcccccccc 310 天前
我估计你想要的是
for i := 0; i < len(visit); i++ { if visit[i] fmt.Printf("%d\n", i) } |
4
nirvam 310 天前
看 for 那行,想想 visit[i]是 false 的时候,会发生什么?
|
5
dobelee 310 天前
很容易找到问题,for 的条件打印出来是 false ,根本没进去。
fmt.Println(0 < len(visit) && visit[0]) // false 正确的写法: ``` for i, val := range visit { if val { fmt.Println(i, val) } } ``` |
6
n0bug OP 哦。。。 是我疏忽了。。
感谢各位,结贴了。 |
7
MFWT 310 天前
展开条件
你猜猜 i < 6 && visit[0] 的值是什么? |
8
realpg 310 天前
|
9
hzzhzzdogee 310 天前
be nice, guys
|
10
mengdodo 309 天前
for 循环体内接 if 判断不好吗,非得一行解决所有?
|
11
Crazypointer 309 天前
代码压行压出 bug 了
|