V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
n0bug
V2EX  ›  Go 编程语言

这个 Go 的 for 循环条件判断有什么问题

  •  
  •   n0bug · 2023-06-23 17:12:47 +08:00 · 1698 次点击
    这是一个创建于 512 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请问这段代码为什么没有任何输出?

    按理说在 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)
        }
    }
    
    11 条回复    2023-06-24 16:41:47 +08:00
    Norths
        1
    Norths  
       2023-06-23 17:15:37 +08:00
    数组的第一个不是写的 false 吗
    ClarkAbe
        2
    ClarkAbe  
       2023-06-23 17:17:03 +08:00 via Android
    你先去把任意一个语言的循环关键字教程看一遍...
    Ericcccccccc
        3
    Ericcccccccc  
       2023-06-23 17:17:20 +08:00
    我估计你想要的是
    for i := 0; i < len(visit); i++ {
    if visit[i]
    fmt.Printf("%d\n", i)
    }
    nirvam
        4
    nirvam  
       2023-06-23 17:19:14 +08:00
    看 for 那行,想想 visit[i]是 false 的时候,会发生什么?
    dobelee
        5
    dobelee  
       2023-06-23 17:20:24 +08:00
    很容易找到问题,for 的条件打印出来是 false ,根本没进去。
    fmt.Println(0 < len(visit) && visit[0]) // false

    正确的写法:
    ```
    for i, val := range visit {
    if val {
    fmt.Println(i, val)
    }
    }
    ```
    n0bug
        6
    n0bug  
    OP
       2023-06-23 17:22:49 +08:00
    哦。。。 是我疏忽了。。
    感谢各位,结贴了。
    MFWT
        7
    MFWT  
       2023-06-23 17:22:51 +08:00
    展开条件

    你猜猜

    i < 6 && visit[0]

    的值是什么?
    realpg
        8
    realpg  
       2023-06-23 17:53:29 +08:00
    技术不到家,非得整花活,俗称人菜瘾大,而且写这种代码被优化概率很高

    ↓这么写,是个人就能看明白
    @Ericcccccccc #3
    hzzhzzdogee
        9
    hzzhzzdogee  
       2023-06-23 18:00:11 +08:00
    be nice, guys
    mengdodo
        10
    mengdodo  
       2023-06-24 16:06:07 +08:00
    for 循环体内接 if 判断不好吗,非得一行解决所有?
    Crazypointer
        11
    Crazypointer  
       2023-06-24 16:41:47 +08:00
    代码压行压出 bug 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2761 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:19 · PVG 16:19 · LAX 00:19 · JFK 03:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.