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 = 15
 var 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 int
 for 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 := 0
 for _, 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值