If
if条件判断
package main
import "fmt"
//if条件判断
func main() {
age := 19
if age > 18 {
fmt.Println("已成年")
} else {
fmt.Println("未成年")
}
多个判断条件
package main
import "fmt"
//if条件判断
func main() {
age := 19
//多个判断条件
if age > 35 {
fmt.Println("人到中年")
} else if age > 18 {
fmt.Println("青年")
} else {
fmt.Println("好好学习吧!")
}
}
作用域
package main
import "fmt"
//if条件判断
func main() {
//作用域
//age变量此时只在if条件判断语句中生效
if age := 19; age > 18 {
fmt.Println("成年")
} else {
fmt.Println("未成年")
}
//fmt.Println(age) 在这里是找不到age的
}
For
基本格式
true时循环体不停地进行循环, false时自动退出循环。
基本格式:
for 初始语句;条件表达式;结束语句{
循环体语句
}
package main
import "fmt"
//for循环
func main() {
//基本格式
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
变形1
for循环的初始语句可以被忽略,但是初始语句后的分号必须要写
package main
import "fmt"
//for循环
func main() {
//变种1
var i = 5
for ; i < 10; i++ {
fmt.Println(i)
}
}
变形2
for循环的初始语句和结束语句都可以省略
package main
import "fmt"
//for循环
func main() {
//变种2
var i = 5
for i < 10 {
fmt.Println(i)
i++
}
}
死循环
一直会循环下去,建议尝试运行一下。
package main
import "fmt"
//for循环
func main() {
//死循环
for {
fmt.Println("123")
}
}
for range(键值循环)
可遍历数组、切片、字符串、map及通道(channel)
返回的是1、数组、切片、字符串返回索引和值
2、map返回的是键和值
3、通道(channel)只返回通道内的值
package main
import "fmt"
//for循环
func main() {
//for range循环
s := "hello 你好 "
for i, v := range s {
fmt.Printf("%d %c\n", i, v)
}
}
Break
跳出循环
package main
import "fmt"
func main() {
//跳出for循环
//当i=5时就跳出for循环
for i := 0; i < 5; i++ {
if i == 5 {
break //跳出for循环
}
fmt.Println(i)
}
fmt.Println("over!!!")
}
Continue
跳过此次循环,继续下次循环
package main
import "fmt"
func main() {
//当i=3时,跳过此次for循环(不执行for循环内部的打印语句)
for i := 0; i < 6; i++ {
if i == 3 {
continue
}
fmt.Println(i)
}
fmt.Println("over!!!")
}
Switch
基本格式
当遇到大量的判断时,使用switch简化大量的判断
package main
import "fmt"
//switch
//简化大量的判断(一个变量和具体的值比较)
func main() {
n := 3
switch n {
case 1:
fmt.Println("大拇指")
case 2:
fmt.Println("食指")
case 3:
fmt.Println("中指")
case 4:
fmt.Println("无名指")
case 5:
fmt.Println("小拇指")
default:
fmt.Println("无效数字")
}
}
一个分值多值
package main
import "fmt"
//switch
//简化大量的判断(一个变量和具体的值比较)
func main() {
//一个分值多个值,多个case值之间用英文逗号分隔
switch n := 7; n {
case 1, 3, 5, 7, 9:
fmt.Println("奇数")
case 2, 4, 6, 8:
fmt.Println("偶数")
default:
fmt.Println(n)
}
}
分支值为表达式
分支使用表达式时switch语句后面不需要再跟判断变量
package main
import "fmt"
//switch
//简化大量的判断(一个变量和具体的值比较)
func main() {
//表达式
age := 30
switch { //分支使用表达式时switch语句后面不需要再跟判断变量
case age < 25:
fmt.Println("好好学习吧")
case age > 25 && age < 35:
fmt.Println("好好工作吧")
case age > 60:
fmt.Println("好好享受生活吧")
default:
fmt.Println("活着!!!")
}
}
Fallthrough
兼容C语言中的case
package main
import "fmt"
//switch
//简化大量的判断(一个变量和具体的值比较)
func main() {
s := "a"
switch {
case s == "a":
fmt.Println("a")
fallthrough //遇到fallthrough 回往下穿透一次
case s == "b":
fmt.Println("b")
case s == "c":
fmt.Println("c")
default:
fmt.Println("...")
}
}
Goto
跳出多层循环
package main
import "fmt"
func main() {
var flag = false
for i := 0; i < 10; i++ {
for j := 'A'; j < 'z'; j++ {
if j == 'C' {
flag = true
break //跳出内层for循环
}
fmt.Printf("%v-%c\n", i, j)
}
if flag {
break // 跳出for循环(外层的for循环)
}
}
}
Goto+label
Goto+label实现跳出多层for循环
package main
import "fmt"
func main() {
//Goto+label实现跳出多层for循环
for i := 0; i < 10; i++ {
for j := 'A'; j < 'z'; j++ {
if j == 'c' {
goto xx //跳转到指定的那个标签
}
}
}
xx: // label标签
fmt.Println("over!!!")
}
参考链接
https://www.liwenzhou.com/posts/Go/04_basic/
转载请注明:Adminxe's Blog » GO语言学习–流程控制