golang中循环语句

循环语句是编程中常使用的流程控制语句之一,go语言中,循环语句的关键字是for,没有while关键字,for语句可以根据指定的条件重复执行其内部的代码块,这个判断条件一般是有for关键字后面的子语句给出的

package main

import "fmt"

func main() {
	for a := 0; a < 5; a++ {
		fmt.Printf("a的值是%d\n", a)
	}
}

上面的for关键字后面有三个自语句,初始化变量a为0,并判断当a小于5时执行下面代码块的内容,每次判断a的值都加1,知道不符合初始化语句的判断条件,退出循环。

for语句后面的三个自语句我们称为,初始化子语句,条件子语句,后置子语句。这三者不能颠倒顺序,其中条件子语句是必须的,条件子语句,会返回一个布尔型,true则执行代码块,false则跳出循环体

package main

import "fmt"

func main() {
	a := 0
	b := 5
	for a < b {
		a++
		fmt.Printf("a的值是:%v\n", a)
	}
}

 上面的例子中,for关键字后面只有一个a<b的判断语句,这是典型的条件判断语句,

for  ;a <b ;

go语言编译器会自动判断三个子语句中是否存在条件自语句

后置子语句的意思是先进行条件子语句判断,for代码块执行之后再对条件变量操作的语句进行判断,上面例子中a++就是一个后置子语句

range子语句

每一个for语句都可以使用一个特殊的range子语句,其作用类似迭代器,用于轮训数组或者切片值中的每一个元素,可以用于轮询字符串中每一个字符,以及字典值中的每一个键值对,甚至还可以持续读取一个通道类型值中的元素

package main

import "fmt"

func main() {
	str := "abcz"
	for i, char := range str {
		fmt.Printf("字符串第%d个字符的值为%d", i, char)
	}
	for _, char := range str {
		fmt.Println(char)
	}
	for i := range str {
		fmt.Println(i)
	}
	for range str {
		fmt.Println("all done")
	}
}

 range关键字右边是range表达式,表达式一般写在for语句前面,一遍提高代码易读性

for i := range "abez"

这样不仅降低了可读性,也不容易管理后续的循环代码

range关键字左边表示的是一对索引值对,根据不同的表达式返回不同的结果,

右边表达式返回的类型第一个值第二个值
stringindexstr[index],返回类型是rune
array /sliceindexstr[index]
mapkeym[key]
channelelement
package main

import "fmt"

func main() {
	m := map[string]int{"a": 1, "b": 2}
	for k, v := range m {
		fmt.Println(k, v)
	}
	numbers := []int{1, 2, 3, 4}
	for i, x := range numbers {
		fmt.Printf("第%d次,x的值为%d\n", i, x)
	}
}

 返回第一个值为索引值,有时候并不是我们所需要的,因此可以使用——空标识符表示忽略第一恶返回值,对于空字典或切片,空数组,空字符串等情况。for语句会直接结束,不会循环。

但如果需要指定for执行循环的次数,例如需要获取数组里面的值,而数组有一个值是空字符串,则可以指定数据长度,强制让for循环执行相应的次数。

package main

import "fmt"

func main() {
	numbers := [5]int{1, 2, 3, 4}
	for i, x := range numbers {

		fmt.Printf("第%d次,x的值为%d\n", i, x)
	}
}

 定义了numbers长度为5,但numbers[4]{1,2,3,4},因为数组 长度不够,会自动添加一个null单元

从for循环返回的信息可以看到第5次x的值为0,代码块执行了5次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值