👇关于我们👇
欢迎大家关注公众号
欢迎大家关注QQ群
Go语言以其简洁明了的语法和强大的内置控制结构,为开发者提供了构建高效且逻辑清晰的程序的强大工具。Go的流程控制机制,从基本的条件判断到复杂的循环处理,是编写各类程序的基础。
本文将深入探讨Go语言中的流程控制机制,包括以下几点。
if判断:如何使用if语句进行条件控制。
for循环:for循环的基本用法和应用场景。
for-range循环:for-range循环在遍历数组、切片等集合时的独特优势。
for-in循环:for-in循环在迭代过程中的注意事项。
for循环作用域:for循环中变量作用域的界定和使用技巧。
goto语句:goto语句的使用方式及其适用场景。
goto使用注意事项:在使用goto时需要避免的问题和潜在风险。
实战应用:通过一个具体示例,展示如何使用for循环打印9×9乘法表,以加深对循环机制的理解和应用。
age := 20
if age > 18 {
fmt.Println("你成年了")
} else {
fmt.Println("你写作业去吧")
}
输出结果:你成年了。
age := 20
if age > 35 {
fmt.Println("人到中年")
} else if age > 18 {
fmt.Println("青年")
} else {
fmt.Println("少年")
}
输出结果:青年。
还有一种特殊用法,作用域:即变量只在for循环内生效,不影响外部的变量。
age := 20
if age := 15; age > 18 {
fmt.Println("你成年了")
} else {
fmt.Println("你写作业去吧")
}
fmt.Println(age)
输出结果:你写作业去吧 20
总结:打印的20是if判断外面定义的age :=20
,如果我们没在if判断外定义age,是不能在if判断外打印age的。
了解了if语句的条件控制后,让我们进一步探索Go语言中的循环结构,特别是for循环的多种用法。
for i := 0; i < 10; i++ {
fmt.Println(i)
}
打印结果如下:
和上面讲if时一样,for也支持作用域设置,当我们的参数是从外部传入时可以这样写:省略for循环的第一个参数。
i := 5
for ;i<10;i++ {
fmt.Println(i)
}
打印结果如下:
我们注意看i++
的位置:
i := 1
for i < 10 {
fmt.Println(i)
i++
}
打印结果如下:
单写一个for
关键字,不加任何条件,就是一个无限循环:
for {
fmt.Println("无限循环")
}
控制台一直无限循环的打印无限循环
:
这是我们最常用也是最好用的循环结构体:
s := "hello王中阳"
for i, i2 := range s {
fmt.Printf("ikey值为:%v,i2字符为:%c\n",i,i2)
}
打印结果如下:
遇到特定情况跳出for循环,不再继续执行时,使用break。
for i := 0; i < 10; i++ {
if i==5 {
break
}
fmt.Println(i)
}
fmt.Println("打印结束")
打印结果如下:
遇到特定情况跳出本次for循环,继续执行后面的for循环,使用continue。
for i := 0; i < 10; i++ {
if i == 5 {
continue
}
fmt.Println(i)
}
fmt.Println("打印结束")
打印结果:我们可以发现下面的打印结果中只是没有打印5,只把i==5
的循环跳过了。
goto是一个非常灵活的用法,这里要重点看一下,很有用。
但是我个人不建议使用goto,因为会让代码变得难懂。了解goto的目的一是处理特殊场景,二是当别人这么写时我们能看懂,起码知道goto这个概念。
举个例子:我们设置一个双重for循环,当遇到C时就跳出循环,不再继续执行。
普通写法如下:
flag := false
for i := 0; i < 10; i++ {
for j := 'A'; j < 'Z'; j++ {
if j == 'C' {
flag = true
break
}
fmt.Printf("%v-%c\n", i, j)
}
if flag {
fmt.Println("over")
break
}
}
使用goto:
for i := 0; i < 10; i++ {
for j := 'A'; j < 'Z'; j++ {
if j == 'C' {
goto xx //跳转到定义的label语句,即直接跳出了for循环
}
fmt.Printf("%v-%c\n", i, j)
}
}
// 定义label
xx:
fmt.Println("over")
总结:用法其实很简单,当我们项目复杂时,合理的使用goto能简化代码;但是千万不要滥用goto,否则会导致代码晦涩难懂。
下面让我们开通脑筋,打印9×9乘法表出来吧。
提示:双重for循环。
我的实战代码如下:
for i := 1; i < 10; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%d * %d = %d ", i, j, i*j)
}
fmt.Println()
}
打印结果如下:
整体来说Go语言的if判断和for循环的使用还是非常简单的,需要注意作用域问题。至于跳出for循环的操作:break和continue与其他语言是一样的,也非常好理解。
关于for循环,除了打印9**×**9乘法表这类好玩的实战,还有哪些经典案例欢迎在评论区留言。