Golang Go语言中的 for 循环条件判断有什么问题

发布于 1周前 作者 sinazl 来自 Go语言

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

按理说在 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)
}

}


Golang Go语言中的 for 循环条件判断有什么问题

更多关于Golang Go语言中的 for 循环条件判断有什么问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

12 回复

数组的第一个不是写的 false 吗

更多关于Golang Go语言中的 for 循环条件判断有什么问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你先去把任意一个语言的循环关键字教程看一遍…

我估计你想要的是
for i := 0; i < len(visit); i++ {
if visit[i]
fmt.Printf("%d\n", i)
}

看 for 那行,想想 visit[i]是 false 的时候,会发生什么?

很容易找到问题,for 的条件打印出来是 false ,根本没进去。
fmt.Println(0 < len(visit) && visit[0]) // false

正确的写法:
<br>for i, val := range visit {<br> if val {<br> fmt.Println(i, val)<br> }<br>}<br>

哦。。。 是我疏忽了。。
感谢各位,结贴了。

展开条件

你猜猜

i < 6 && visit[0]

的值是什么?

技术不到家,非得整花活,俗称人菜瘾大,而且写这种代码被优化概率很高

↓这么写,是个人就能看明白
#3

for 循环体内接 if 判断不好吗,非得一行解决所有?

代码压行压出 bug 了

在Go语言(Golang)中,for 循环是一个非常强大且灵活的控制结构,用于迭代、条件循环等多种场景。关于 for 循环条件判断,通常需要注意以下几个方面,以避免常见问题和陷阱:

  1. 条件表达式必须为布尔类型:在Go语言的 for 循环中,条件表达式必须返回一个布尔值(truefalse)。如果条件表达式不是布尔类型,编译器会报错。

  2. 避免死循环:如果条件表达式永远为 true,或者循环体内没有改变条件表达式的值,将会导致死循环。这通常是不期望的,需要特别注意循环终止条件的设置。

  3. 短路逻辑:在条件表达式中使用逻辑运算符(如 &&||)时,可以利用短路逻辑来优化循环条件判断。例如,for i < 10 && isValid(i) 会在 i >= 10 时立即停止评估,避免不必要的函数调用。

  4. 变量作用域:在 for 循环中声明的变量,其作用域仅限于该循环体内。这有助于避免变量名冲突和意外的变量共享。

  5. 简洁性:Go语言鼓励简洁明了的代码风格。在编写 for 循环时,尽量保持条件判断的清晰和直接,避免复杂的嵌套逻辑。

总之,在使用Go语言的 for 循环时,需要仔细考虑条件判断的逻辑,确保循环能够正确、高效地执行。通过遵循上述建议,可以减少错误和潜在的性能问题。

回到顶部