文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
for
Go 里面最强大的一个控制逻辑就是 for
,它既可以用来循环读取数据,又可以当作 while
来控制逻辑,还能迭代操作。它的语法如下:
for expression1; expression2; expression3 {
//...
}
expression1
、 expression2
和 expression3
都是表达式,其中 expression1
和 expression3
是变量声明或者函数调用返回值之类的, expression2
是用来条件判断, expression1
在循环开始之前调用, expression3
在每轮循环结束之时调用。
一个例子比上面讲那么多更有用,看看下面的例子吧:
package main
import "fmt"
func main(){
sum := 0;
for index:=0; index < 10 ; index++ {
sum += index
}
fmt.Println("sum is equal to ", sum)
}
// 输出:sum is equal to 45
有些时候需要进行多个赋值操作,由于 Go 里面没有 ,
操作符,那么可以使用平行赋值 i, j = i+1, j-1
有些时候如果忽略 expression1
和 expression3
:
sum := 1
for ; sum < 1000; {
sum += sum
}
其中 ;
也可以省略,那么就变成如下的代码了,这就是 while
的功能。
sum := 1
for sum < 1000 {
sum += sum
}
在循环里面有两个关键操作 break
和 continue
, break
操作是跳出当前循环, continue
是跳过本次循环。当嵌套过深的时候, break
可以配合标签使用,即跳转至标签所指定的位置,详细参考如下例子:
for index := 10; index>0; index-- {
if index == 5{
break // 或者 continue
}
fmt.Println(index)
}
// break 打印出来 10、9、8、7、6
// continue 打印出来 10、9、8、7、6、4、3、2、1
break
和 continue
还可以跟着标号,用来跳到多重循环中的外层循环
for
配合 range
可以用于读取 slice
和 map
的数据:
for k,v:=range map {
fmt.Println("map's key:",k)
fmt.Println("map's val:",v)
}
由于 Go 支持 “多值返回”, 而对于“声明而未被调用”的变量,编译器会报错,在这种情况下,可以使用 _
来丢弃不需要的返回值
例如
for _, v := range map{
fmt.Println("map's val:", v)
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论