Golang Go语言中的 for 循环条件判断有什么问题
请问这段代码为什么没有任何输出?
按理说在 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
数组的第一个不是写的 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
be nice, guys
for 循环体内接 if 判断不好吗,非得一行解决所有?
代码压行压出 bug 了
在Go语言(Golang)中,for
循环是一个非常强大且灵活的控制结构,用于迭代、条件循环等多种场景。关于 for
循环条件判断,通常需要注意以下几个方面,以避免常见问题和陷阱:
-
条件表达式必须为布尔类型:在Go语言的
for
循环中,条件表达式必须返回一个布尔值(true
或false
)。如果条件表达式不是布尔类型,编译器会报错。 -
避免死循环:如果条件表达式永远为
true
,或者循环体内没有改变条件表达式的值,将会导致死循环。这通常是不期望的,需要特别注意循环终止条件的设置。 -
短路逻辑:在条件表达式中使用逻辑运算符(如
&&
和||
)时,可以利用短路逻辑来优化循环条件判断。例如,for i < 10 && isValid(i)
会在i >= 10
时立即停止评估,避免不必要的函数调用。 -
变量作用域:在
for
循环中声明的变量,其作用域仅限于该循环体内。这有助于避免变量名冲突和意外的变量共享。 -
简洁性:Go语言鼓励简洁明了的代码风格。在编写
for
循环时,尽量保持条件判断的清晰和直接,避免复杂的嵌套逻辑。
总之,在使用Go语言的 for
循环时,需要仔细考虑条件判断的逻辑,确保循环能够正确、高效地执行。通过遵循上述建议,可以减少错误和潜在的性能问题。