当前位置: 首页 > 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

相关文章:

  • 云手机应该怎么选?和传统手机有什么区别?哪些云手机支持安卓12系统?
  • Kotlin Native与C/C++高效互操作:技术原理与性能优化指南
  • IP、子网掩码、默认网关、DNS
  • 【python实战】二手房房价数据分析与预测
  • day27:零基础学嵌入式之进程
  • 海外仓系统 选浩方WMS一款体验更好的海外仓管理系统
  • 内存管理 : 02 内存分区与分页
  • leetcode2025. 分割数组的最多方案数-hard
  • 除自身以外数组的乘积与加油站问题:算法揭示数据中的隐藏关系与环路行驶的最优解
  • 图片批量压缩转换格式 JPG/PNG无损画质 本地运行
  • Java 可扩展状态系统设计:备忘录模式的工程化实践与架构演进
  • 6个跨境电商独立站平台
  • 理解 Redis 事务-21(使用事务实现原子操)
  • docker 镜像完整生成指南
  • 论文阅读笔记——Janus,Janus Pro
  • RabbitMQ 集群与高可用方案设计(一)
  • 嵌入式硬件---施密特触发器单稳态触发器多谐振荡器
  • Redis实战-缓存篇(万字总结)
  • uniapp报错mongo_cell_decision_not_found
  • TCP 和 UDP 的区别
  • 做同城网站需要哪些/东莞百度搜索网站排名
  • 我的世界做圆网站/搜狗网站提交入口
  • python源码分享网站/网络营销seo是什么意思
  • 如何在台湾做企业网站/微信如何引流推广精准加人
  • 设计室内效果图设计/seo免费诊断
  • 有专门做ppt的网站有哪些/国内永久免费云服务器