if
流程控制是每种编程语言中的精髓
代码案例
if else
package main
import "fmt"
func main(){
age := 19
if age > 18 { // 条件满足
fmt.Println("小明18岁了!")
}else{// 条件不满足
fmt.Println("小明还在读书。")
}
}
if else 变体
// 作用域
// age变量此时只在if条件判断语句中生效
// 这样做的目的是为了减小内存消耗
if age:=19; age > 18 { // 条件满足
fmt.Println("小明18岁了!")
}else{// 条件不满足
fmt.Println("小明还在读书。")
}
for 循环
基本式
for i := 0; i < 10; i++{
fmt.Println(i);
}
变体1
// 变体
var i = 5;
for; i < 10 ; i ++{
fmt.Println(i)
}
变体2(用的少)
var i = 5
for i < 10 {
fmt.Println(i)
i++
}
无限循环
for{
循环语句
}
for range
// for range 循环
s := "fasdfasdfasdf循环"
for i , v := range s{
fmt.Printf("%d %c\n",i, v)
}
控制流程执行期间结束
// 控制流程值跳出for循环
for i := 0; i < 10; i++ {
fmt.Printf("%d\t",i);
if(i == 5) {
break
}
fmt.Println();
}
控制流程跳过某一项
// 控制流程中断后继续
for i := 0; i < 10; i++ {
fmt.Printf("%d\t",i);
if(i == 5) {
continue;
}
fmt.Println();
}
switch 控制语句
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
switch i {
case 1:
fmt.Println("这个是1")
case 3:
fmt.Println("这个是3")
}
}
}
switch 变体1
switch n:=3; n {
case 2,4,6,8,10:
fmt.Println("偶数")
case 3,5,7,9,11:
fmt.Println("奇数")
default:
fmt.Println("default")
}
分支还可以使用表达式,这个时候的switch语句后面不需要再跟判断变量
age := 30
switch {
case age <= 25:
fmt.Println("好好学习吧")
case age >= 30:
fmt.Println("好好工作吧")
case age >= 65:
fmt.Println("好好享受吧")
default:
fmt.Println("活着就好")
}
fallthrough 语法可以执行麻竹条件的case的下一个case,是为了兼容C语言中的case 条件设计的。
s:="a"
switch {
case s == "a":
fmt.Println("a")
fallthrough
case s=="b":
fmt.Println("c")
default:
fmt.Println("...")
}
//a
//b
goto(跳转到指定标签)
goto 语句通过标签进行代码间的无条件跳转。goto语句可以在快速跳出循环,避免重复退出还是那个有一定的帮助。Go语言中使用goto语句简化一些代码的实现过程。
跳出多层循环
package main
import "fmt"
func main(){
// 跳出多层循环
var flag = false
for i := 0; i < 10; i++ {
for j := 'A'; j < 'Z'; j++ {
if(j == 'B'){
flag = true
break
}
fmt.Printf("%v-%c",i,j)
}
if flag {
break
}
}
}
goto 实现跳出多人循环
(这个代码尽量少用)
for i := 0; i < 10; i++ {
for j := 'A'; j < 'Z'; j++ {
if j == 'C'{
goto xx
}
fmt.Printf("%v-%c\n",i,j)
}
}
xx: // label 标签
fmt.Println("over")