17zwd一起做网站广州新塘,苗圃网站模版,html网页制作我的家乡,页面设计软件排行Go语言入门之流程控制简述
1.if语句 if语句和其他语言一样#xff0c;只不过go语言的if不需要用括号包裹 if 语句的分支代码块的左大括号与 if 关键字在同一行上#xff0c;这是 go 代码风格的统一要求 简单实例#xff1a;
func main() {// 猜数字a : 2if a 0 {if a…Go语言入门之流程控制简述
1.if语句 if语句和其他语言一样只不过go语言的if不需要用括号包裹 if 语句的分支代码块的左大括号与 if 关键字在同一行上这是 go 代码风格的统一要求 简单实例
func main() {// 猜数字a : 2if a 0 {if a 3 {fmt.Println(数字过大)} else if a 1 {fmt.Println(再大一点)} else if a 2 {fmt.Println(再大一点)} else if a 3 {fmt.Println(猜对了)}} else {fmt.Println(数字过小)}
}
// 输入的是2输出的结果是再大一点if语句的特殊写法 if 条件判断还有一种特殊的写法可以在 if 表达式之前添加一个执行语句再根据变量值进行判断 // 特殊写法这种写法将a的作用范围限制在if表达式中
if a : 10; a 5 {fmt.Println(a)return
}2.for语句 go语言只支持for循环没有while 1for语句的7种用法
第一种普通写法
sum : 0
for i : 0; i 10; i {sum i
}第二种无限循环
for{// 无限循环代码块
}第三种for后只写条件
n : 0
// for后面只加条件
for n 3 {n
}
fmt.Println(n)第四种for range 遍历切片
var slice []int []int{1, 2, 3, 4, 5}
// for range循环切片或数组
for index, value : range slice {fmt.Printf(index:%d,value:%d \n, index, value)
}第五种for range 遍历字符串和整数
// 可以循环字符串 字符串底层为一个byte切片
// 字符串大小为16字节其有一个指针和int型长度组成
for _, j : range zhangsan {fmt.Printf(%c \n, j)
}// for range还可以遍历整数
for i : range 5 {fmt.Printf(%d, i1)
}
// 打印结果12345第六种遍历map
// 循环map
mmap : map[int]string{11: hh,22: ff,33: ww,
}
for key, value : range mmap {fmt.Println(key, value)
}第七种for range 遍历channel
// 循环channel
chnl : make(chan int)
go func() {chnl - 100chnl - 1000chnl - 10000chnl - 100000close(chnl)
}()
for i : range chnl {fmt.Println(i)
}2for语句的4种结束方法
第一种return
func main() {step : 2for step 0 {step--fmt.Println(step)//执行一次就结束了return}//不会执行fmt.Println(结束之后的语句....)
}第二种break 注意go语言中break只能跳出一层for循环 func main() {step : 2for step 0 {step--fmt.Println(step)//跳出循环,还会继续执行循环外的语句break}//会执行fmt.Println(结束之后的语句....)
}第三种panic
func main() {step : 2for step 0 {step--fmt.Println(step)//报错了直接结束panic(出错了)}//不会执行fmt.Println(结束之后的语句....)
}第四种goto
func main() {for x : 0; x 10; x {if x 2 {// 跳转到标签goto breakHere}}// 手动返回, 避免执行进入标签return// 标签
breakHere:fmt.Println(done)
}3.switch语句 Go语言的switch同其他语言的差不多使用 switch 语句可方便地对大量的值进行条件判断。 switch 分支表达式可以是任意类型不限于常量。可省略 break默认自动终止。 switch后如果没有表达式会对第一个true进行匹配 例子如下 // 成绩判定grade : B// 输入90var score int 90switch score {case 90:grade Acase 80:grade Bcase 50, 60, 70:grade C// 无论 default出现在什么位置它只会在所有case都没有匹配上的情况下才会被执行default:grade D}fmt.Println(grade)//结果是A注意 Go里面switch默认相当于每个case最后带有break 匹配成功后不会自动向下执行其他case而是跳出整个switch 如果需要执行完一个case之后进入下一个case不跳出swtich 这就需要用到fallthrough无论如何都会进入下个case a : helloswitch {case a hello:fmt.Print(hello )fallthroughcase a world:fmt.Println(world)}
//打印结果hello world4.goto语句 goto 语句通过标签进行代码间的无条件跳转 goto 语句可以实现快速跳出循环、避免重复退出 因此 goto 语句能简化一些代码的实现过程 func main() {if 20 10 {goto GotoTag1}return
GotoTag1:fmt.Println(tag1)if 10 5 {goto GotoTag2}return
GotoTag2:fmt.Println(tag2)
}5.break语句 break 语句可以结束 for、switch 和 select 的代码块 break 语句还可以在语句后面添加标签表示退出某个标签对应的代码块 标签要求必须定义在对应的 for、switch 和 select 的代码块上。 func main() {
OuterLoop:for i : 0; i 2; i {for j : 0; j 5; j {switch j {case 2:fmt.Println(i, j)break OuterLoopcase 3:fmt.Println(i, j)break OuterLoop}}}
}6.continue语句 continue 语句可以结束当前循环开始下一次的循环迭代过程 仅限在 for 循环内使用 在 continue 语句后添加标签时表示开始标签对应的循环 func main() {
OuterLoop:for i : 0; i 2; i {for j : 0; j 5; j {switch j {case 2:fmt.Println(i, j)continue OuterLoop}}}
}