1. if语句
package main
import "fmt"
/*if语句格式:
if 布尔表达式 {
在布尔表达式为 true 时执行
}
if 布尔表达式 {
在布尔表达式为 true 时执行
} else {
在布尔表达式为 false 时执行
}
if 布尔表达式1 {
在布尔表达式1为 true 时执行
} else if 布尔表达式2{
在布尔表达式1为 false ,布尔表达式2为true时执行
} else{
在上面两个布尔表达式都为false时,执行
}
*/
func main(){
var a int = 10
if a < 20 {
fmt.Printf("a 小于 20\n")
}
fmt.Printf("a的值为:%d\n",a)
print()
if1()
}
/*if语句变体:
if statement; condition {
}
if condition{
}
*/
func if1(){
// num的定义在if里,那么只能够在该if..else语句块中使用
if num := 20; num % 2 == 0 {
fmt.Println(num, "is even")
} else {
fmt.Println(num,"is odd")
}
}
2. switch语句
package main
import "fmt"
func main() {
var grade string = "B"
var marks int = 70
// switch 语句用于基于不同条件执行不同动作
switch marks {
case 90:
grade = "A"
case 80:
grade = "B"
default:
grade = "C"
}
fmt.Printf("grade is :%s\n", grade)
// 如果switch没有表达式,它会匹配true
switch {
case grade == "A":
fmt.Printf("优秀\n")
case grade == "B":
fmt.Printf("良好\n")
default:
fmt.Printf("及格或者不及格\n")
}
switch1()
}
/*
Go里面switch默认相当于每个case最后带有break,
匹配成功后不会自动向下执行其他case,而是跳出整个switch,
但是可以使用fallthrough强制执行后面的case代码。
*/
func switch1() {
switch x := 5;x{
case 5:
x += 10
fmt.Println(x)
fallthrough
case 6:
x += 20
fmt.Println(x)
default:
fmt.Println(x)
}
}
运行结果:
grade is :C
及格或者不及格
15
35
3. for语句
package main
import "fmt"
func main() {
var num1 int = 5
var num2 int
// for语句包括初始化、条件、post语句
for num2 := 0; num2 < 10; num2++ {
fmt.Printf("num2的值为:%d\n", num2)
}
// 只保留条件,效果与while相似
for num2 < num1 {
num2++
fmt.Printf("num2的值为:%d\n", num2)
}
numbers := [6]int{1, 2, 3, 6}
// for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环
for i, x := range numbers {
fmt.Printf("第%d位 * 的值 = %d\n", i, x)
}
}
4. 跳出循环
package main
import "fmt"
func main() {
for i := 1; i <= 10; i++ {
if i > 5 {
break // break用于跳出循环体
}
fmt.Println(i)
}
fmt.Printf("line after for loop")
for i := 1; i < 20; i++ {
if i%2 == 0{
continue // continue用于跳出这次循环
}
fmt.Println(i)
}
}
5. goto语句
package main
import "fmt"
func main() {
var a int = 10
// goto可以无条件地转移到过程中指定的行
LOOP: for a < 20{
if a == 15{
a = a + 1
goto LOOP
}
fmt.Printf("a的值为:%d\n",a)
a++
}
}