go语言学习【五】

本文介绍了Go语言中for循环的死循环实现,以及字符串的两种遍历方法,对比了与Java和C的区别。还展示了如何设置随机数,使用label标签指定break跳出位置,并探讨了continue和goto的使用。此外,提供了代码示例和运行结果截图。
摘要由CSDN通过智能技术生成

for循环的死循环

代码如下:

package main
import (
	"fmt"
)
func main()  {
	var a=10
	for ; ; {//与for{
						//}效果一样
		fmt.Println(a)
		a++
		if a==12{
			break
		}
	
	}
}

字符串的两种遍历方式

第一种是用传统的for-i循环遍历,
第二种是利用go种自带的方法。
attention
1:注意在utf-8中一个中文占三个字节。
2:对于传统的遍历,在遇到中文是会导致输出错误,我们可以重新将它转换成为切片,在定义一个字符串来接收转换出来的数据。
3:go中的for-range遍历可以直接查找出中文。使用字符遍历。
代码如下:

package main
import "fmt"
func main (){
	st:="fzuishuai是的"
	st2:=[]rune(st)//将st转换成切片
	for i:=0;i<len(st2);i++{//普通遍历
		fmt.Printf("%c",st2[i])
	}
	fmt.Println("\n")
	str:="fis帅哥"
	for index,val:=range str{//利用go中自带的方法来遍历,其中index为字符串数组下标,str被赋值给val
		fmt.Printf("index=%d,val=%c \n",index,val)
	}
}


运行结果截图:
两种数组遍历方法

与Java和C不一样的地方

go中没有while和do-while循环,都是用for循环来实现相关的功能。

如何设置随机数

1:首先我们将会用到rand函数,使用这个函数需要引入“math/rand”包 ,使用方法:
定义的变量:=rand.Intn(随机数上界);
你所定义的变量将会随机生成,注意随机数为0到上界减一,不包括上界。
==但是这样定义出来的随机数是伪随机数,每次运行的结果都是一样的,这个时候就需要设置时间种子:time.Now.Unix()->返回一个从1970.1.1.0h.0min到现在的秒数。
使用方法见代码:

package main
import (
   "fmt"
   "math/rand"
   "time"
)
func main(){
   rand.Seed(time.Now().Unix())
   for{
   	n:=rand.Intn(100)+1;//从1-100随机数
   	fmt.Println(n)
   	if(n==1){
   		break
   	}
   	
   }

}

运行结果截图:
在这里插入图片描述

使用label标签来指定break跳出位置

文字不好说明,看代码吧:

第一种label:

package main
import "fmt"
func main(){
	for i:=0;i<10;i++{
		label1:
		for j:=0;j<10;j++{
			fmt.Print(j)
			if j==3{
				break label1
			}
		}
		fmt.Print("\n")
	}
}

运行结果截图:
在这里插入图片描述可以看到一共运行了10次,每次j=3时就跳出j的循环,执行i的循环。

第二种label

package main
import "fmt"
func main(){
	label2:
	for i:=0;i<10;i++{
		
		for j:=0;j<10;j++{
			fmt.Print(j)
			if j==3{
				break label2
			}
		}
		fmt.Print("\n")
	}
}

运行结果截图:
在这里插入图片描述可以看到当运行了一次 j 循环后直接跳出了 i 循环。

continue,goto的使用

1:continue是用来跳过这次循环开始下一次循环的,和c++的一样,不在赘述。
2:go中是支持goto语句的使用的,配合label标签使用,但是一般不建议使用,因为代码将会更难理解。
示例代码如图:

package main
import "fmt"
func main(){
	fmt.Println("fyf")
	goto label1
	fmt.Println("f")
	fmt.Println("y")
	label1:
	fmt.Println("i")
	fmt.Println("k")
	fmt.Println("m")
}

运行结果截图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值