当前位置: 首页 > news >正文

Go语言--语法基础5--基本数据类型--循环语句

Go 语言循环语句 for 循环
golang 里面没有 while 关键字,可以用 for+break 实现。
    for 循环是一个循环控制结构,可以执行指定次数的循环。
语法
    Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。
    和 C 语言的 for 一样: for 循环 注意:不能在 for 之后带() 会有语 法错误。
for init; condition; post {
//循环体语句
}
• init : 一般为赋值表达式,给控制变量赋初值;
• condition : 关系表达式或逻辑表达式,循环控制条件;
• post : 一般为赋值表达式,给控制变量增量或减量。
和 C 的 while 一样: while循环
for condition { //循环体语句
}

和 C 的 for(;;) 一样: 死循环

for { //循环体语句
}

for 语句执行过程如下:
①先对表达式 1 赋初值;
②判别赋值表达式 condition 是否满足给定条件,若其值为真,执
行循环体内语句,
然后执行 post ,进入第二次循环,再判别 condition ;否则判断
condition 的值为假,
不满足条件,就终止 for 循环,执行循环体外语句。
实例
package main
import "fmt"
func main() {var b int = 15var a int/* for 循环 */for a := 0; a < 10; a++ {fmt.Printf("a 的值为: %d\n", a)}for a < b {a++fmt.Printf("a2 的值为: %d\n", a)}
}
尝试一下以上实例运行输出结果为 :
Go 语言循环嵌套
Go 语言允许用户在循环内使用循环。接下来我们将为大家介绍嵌套循
环的使用。
Go 语言中的循环语句只支持 for 关键字,而不支持 while do-while
结构,
关键字 for 的基本使用方法与 C 语言和 C++ 中非常接近:
语法
以下为 Go 语言嵌套循环的格式:
for [condition | ( init; condition; increment ) | Range]{for [condition | ( init; condition; increment ) | Range]{statement(s)}statement(s)
}
注意: for 后面的条件表达式不需要用圆括号 () 括起来
实例
以下实例使用循环嵌套来输出 2 100 间的素数:
package main
import "fmt"
func main() {var i, j intfor i=2; i < 100; i++ { //左花括号{必须与 for 处于同一行for j=2; j <= (i/j); j++ {if(i%j==0) {break // 想·如果发现因子,则不是素数}}if(j > (i/j)) {fmt.Printf("%d 是素数\n", i)}} 
}

以上实例运行输出结果为:

2 是素数
3 是素数
5 是素数
7 是素数
。。。。
73 是素数
79 是素数
83 是素数
89 是素数
97 是素数
Go 语言中 range 关键字
用于 for 循环中迭代数组 (array) 、切片 (slice) 、通道 (channel)
集合 (map) 的元素。在数组和切片中它返回元素的索引值,在集合中返回
key-value 对的 key 值。
对于映射,它返回下一个键值对的键。 Range 返回一个值或两个值。如果在
Range 表达式的左侧
只使用了一个值,则该值是下表中的第一个值。

实例
package main
import "fmt"
func main() {//这是我们使用range去求一个slice的和。使用数组跟这个很类似nums := []int{2, 3, 4}sum := 0for _, num := range nums {sum += num}fmt.Println("sum:", sum)//在数组上使用range将传入index和值两个变量。上面那个例子我们不需
要使用该元素的序号,//所以我们使用空白符"_"省略了。有时侯我们确实需要知道它的索引。for i, num := range nums {if num == 3 {fmt.Println("index:", i)}}//range也可以用在map的键值对上。kvs := map[string]string{"a": "apple", "b": "banana"}for k, v := range kvs {fmt.Printf("%s -> %s\n", k, v)}//range也可以用来枚举Unicode字符串。第一个参数是字符的索引,
5/6//第二个是字符(Unicode的值)本身。for i, c := range "go" {fmt.Println(i, c)}
}

以上实例运行输出结果为:

sum: 9
index: 1
a -> apple
b -> banana
0 103
1 111
http://www.xdnf.cn/news/639145.html

相关文章:

  • [ACTF新生赛2020]easyre
  • Bolt.new:重塑 Web 开发格局的 AI 利器
  • MFC:获取所有打印机的名称(打印机模块-2)
  • 【Siggraph Asia 2023】低光增强Diffusion-Low-Light-main(引入diffusion与DWT) -- part1论文精读
  • AutoGen SelectorGroupChat 示例:社会热搜话题事件榜单
  • 成功解决ImportError: cannot import name ‘DTensor‘ from ‘torch.distributed.tensor‘
  • 选择排序算法研究
  • 【NIPS 2024】Towards Robust Multimodal Sentiment Analysis with Incomplete Data
  • C++异步(1)
  • [Protobuf] 快速上手:安全高效的序列化指南
  • SymAgent:一种用于知识图谱复杂推理的神经符号自学Agent框架
  • Oracle中的[行转列]与[列转行]
  • 【目标检测】【医学图像目标检测】BGF-YOLO:脑肿瘤检测的多尺度注意力特征融合
  • 【linux】systemctl基本语法
  • 康佳Java开发面试题及参考答案
  • 前端vue3实现图片懒加载
  • 【LCEL深度解析】LangChain表达式语言的工程化实践指南
  • 基于stm32单片机的智能盲杖研究
  • # YOLO11解决方案之区域追踪探索
  • Python 数据类型方法(1)
  • Docker 一键部署倒计时页面:Easy Countdown全设备通用
  • 2025年5月18日蓝桥stema省选拔赛答案解析
  • GDB调试工具详解
  • 探索高效视频下载:一款绿色版工具的实用体验
  • FreeRTOSConfig.h的作用
  • Three.js 海量模型加载性能优化指南
  • CMake指令:find_package()在Qt中的应用
  • C# 深入理解类(索引器)
  • Disruptor—3.核心源码实现分析一
  • 黑马点评-分布式锁Lua脚本