一、if else(分支结构)
1、if 条件判断基本写法
package main
import ("fmt"
)
func main() {score := 65if score >= 90 {fmt.Println("A")} else if score > 75 {fmt.Println("B")} else {fmt.Println("C")}
}
2、if 条件判断特殊写法
- if 条件判断还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断
package main
import "fmt"
func main() {//这里的 score 是局部作用域if score := 56; score >= 90 {fmt.Println("A")} else if score > 75 {fmt.Println("B")}else {fmt.Println("C")fmt.Println(score) // 只能在函数内部打印 score}// fmt.Println(score) //undefined: score
}
二、for(循环结构)
1、for 循环
1、普通 for 循环
package main
import "fmt"
func main() {// 打印: 0 ~ 9 的数字for i := 0; i < 10; i++ {fmt.Println(i)}
}
2、外部定义 i
package main
import "fmt"
func main() {i := 0for i < 10 {fmt.Println(i)i++}
}
3、省略初始语句
package main
import "fmt"
func main() {i := 0for ; i < 10; i++ {fmt.Println(i)}
}
2、打印 0-10 的所有偶数
package main
import "fmt"
func main() {// 0 2 4 6 8for i := 0; i < 10; i++ {if i%2 == 0 {fmt.Println(i)}}
}
3、嵌套循环
package main
import "fmt"
func main() {for i := 1; i <= 9; i++ {for j := 1; j <= i; j++ {fmt.Printf("%vx%v=%v \t", i, j, i*j)}fmt.Println()}
}
/*
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
*/
4、模拟 while 循环
- Go 语言中是没有 while 语句的,我们可以通过 for 代替
package main
import "fmt"
func main() {k := 1for { // 这里也等价 for ; ; {if k <= 10 {fmt.Println("ok~~", k)} else {break //break 就是跳出这个 for 循环}k++}
}
5、for range(键值循环)
package mainimport "fmt"func main() {str := "abc上海"for index,var := range str{fmt.Printf("索引:%d,值=%c \n",index, val)}
}
/*
索引=0, 值=a
索引=1, 值=b
索引=2, 值=c
索引=3, 值=上
索引=6, 值=海
*/
三、switch case
- 使用 switch 语句可方便地对大量的值进行条件判断
1、case 一般用法
package main
import "fmt"
func main() {score := "B"switch score {case "A":fmt.Println("非常棒")case "B":fmt.Println("优秀")case "C":fmt.Println("及格")default:fmt.Println("不及格")}
}
2、case 语句多个值
package main
import "fmt"
func main() {n := 2switch n {case 1, 3, 5, 7, 9:fmt.Println("奇数")case 2, 4, 6, 8:fmt.Println("偶数")default:fmt.Println(n)}
}
3、fallthrough 语句
- fallthrough 语法可以执行满足条件的 cast 的下一个 case,是为了兼容C 语言中的 case 设计
package main
import "fmt"
func main() {s := "a"switch {case s == "a":fmt.Println("a")fallthroughcase s == "b":fmt.Println("b")case s == "c":fmt.Println("c")default:fmt.Println("...")}
}
/*
a
b
四、break、continue、goto
1、break 跳出单循环
package main
import "fmt"
func main() {k := 1for { // 这里也等价 for ; ; {if k <= 10 {fmt.Println("ok~~", k)} else {break //break 就是跳出这个 for 循环}k++}
}
2、跳出多重循环
- 在多重循环中,可以用标号 label 标出想 break 的循环
package main
import "fmt"
func main() {lable2:for i := 0; i < 2; i++ {for j := 0; j < 10; j++ {if j == 2 {break lable2}fmt.Println("i j 的值:", i, "-", j)}}
}
/*
i j 的值: 0 - 0
i j 的值: 0 - 1*/
3、continue(继续下次循环)
package main
import "fmt"
func main() {for i := 0; i < 2; i++ {for j := 0; j < 4; j++ {if j == 2 {continue}fmt.Println("i j 的值", i, "-", j)}}
}
/*
i j 的值 0 - 0
i j 的值 0 - 1
i j 的值 0 - 3
i j 的值 1 - 0
i j 的值 1 - 1
i j 的值 1 - 3*/
4、goto(跳转到指定标签)
package main
import "fmt"
func main() {for i := 0; i < 10; i++ {for j := 0; j < 10; j++ {if j == 2 {goto breakTag // // 设置退出标签}fmt.Printf("%v-%v\n", i, j)}}returnbreakTag: // 标签fmt.Println("结束 for 循环")
}
/*
0-0
0-1
结束 for 循环*/