go语言循环语句

今天说一下go语言的循环条件


(一)重点放在前面说

  • Go语言没有while循环条件,只有for循环,但是for循环可以充当while循环

(二)Go语言for循环语法

①一般for循环
语法:
	for 赋值语句;循环条件;循环变量{}
打印99乘法表(与c语言,c++一样)

	mystr := "%d*%d=%d\t"
	for i := 1; i < 10; i++ {
		for j := 1; j <= i; j++ {
			tempstr := fmt.Sprintf(mystr, j, i, j*i)//这一句时将数据格式化写入mystr内
			fmt.Print(tempstr)//打印格式化好的字符串
		}
		fmt.Println()
	}
②可以充当while循环的for循环
语法:
	for 循环条件{}
打印99乘法表(与while循环没两样)

	mystr := "%d*%d=%d\t"
	j, i := 1, 1
	for i < 10 {
		j = 1
		for j <= i {
			tempstr := fmt.Sprintf(mystr, j, i, j*i)//这一句时将数据格式化写入mystr内
			fmt.Print(tempstr)//打印格式化好的字符串
			j++
		}
		fmt.Println()
		i++
	}
③对可迭代对象进行循环遍历
语法:
	for key,value :=range 可迭代对象{}
该方法在以后最为常用,其中key,value可以使用 _ 空白字符进行忽略,只得到键或值
打印99乘法表

	//以下一句是数组直接初始化的方法,在以后还会提到
	myarray := [9]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
	for _, v := range myarray {
		l := 1
		for l <= v {
			fmt.Printf("%d*%d=%d\t", l, v, l*v)
			l++
		}
		fmt.Println()
	}

(三)终止、改变循环的条件


重点:语言可以在循环外面设置标签,可以跳出标签下的循环。(下面详细介绍)

①break
		默认跳出一层循环 直接在指定位置进行break
		加上标签的话跳出标签下的循环
打印1-100的笛卡尔积:

//抛出锚点(标签)
Here:
	for i := 0; i < 100; i++ {
		for j := 0; j < 100; j++ {
			fmt.Println(i, "与", j,"乘积为",i*j)
			if j == 10 {
				break Here
			}
		}
	}
	
-------------------------------------------------------------------------------------
因为有循环条件	
一般的break条件下应该是打印1000个数据
但是对标签进行跳出,就直接跳出了外层循环
打印结果为:(10个数据)
	00 乘积为 0
	01 乘积为 0
	02 乘积为 0
	03 乘积为 0
	04 乘积为 0
	05 乘积为 0
	06 乘积为 0
	07 乘积为 0
	08 乘积为 0
	09 乘积为 0
	010 乘积为 0
-------------------------------------------------------------------------------------
②continue
		默认跳出本次循环
		加上标签的话会跳出标签循环的语句的本次循环
打印1-100的笛卡尔积:

Here:
	for i := 0; i < 100; i++ {
		for j := 0; j < 100; j++ {
			fmt.Println(i, "与", j, "乘积为", i*j)
			if j == 10 {
				continue Here
			}
		}
	}
	
-------------------------------------------------------------------------------------
因为有循环条件	
一般的continue情况下应该是打印9900个数据
但是对标签进行跳过,就直接跳过了本次外层循环(相当于内置循环内有一个普通的break)
最终打印的数据只有1000-------------------------------------------------------------------------------------
③goto
		选定一个位置写一个锚点,执行到goto语句时跳转到指定的锚点。
使用goto打印99乘法表

	mystr := "%d*%d=%d\t"
	for i := 1; i < 10; i++ {
		j := 1
	Here:
		if j <= i {
			fmt.Print(fmt.Sprintf(mystr, j, i, i*j))
			j++
			goto Here
		} else {
			fmt.Println()
		}
	}

总的来说,go语言在循环方面引入标签这一操作,相对于其他语言来说是一大特色,但是循环时加入这种标签会让一般人(特别是其他语言转入go语言的程序员很不适应,合理的使用事半功倍,不熟悉的情况下使用后患无穷),另外goto语句会破坏代码的逻辑严密,所以介意大家以后尽少使用。


在这里插入图片描述


GO GO GO !

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷尔。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值