分支结构
与 C 语言不同的是: Go 流程控制语句中的条件表达式不需要用括号括起来
txt
if 判断表达式 {
条件成立执行
}单分支
go
package main
import "fmt"
func main() {
num := 10
if num > 20 {
fmt.Println("num 大于 20")
}
}双分支
go
package main
import "fmt"
func main() {
num := 10
if num > 20 {
fmt.Println("num 大于 20")
} else {
fmt.Println("num 小于/等于 20")
}
}多分支-if
go
package main
import "fmt"
func main() {
num := 10
if num > 20 {
fmt.Println("num 大于 20")
} else if num == 20 {
fmt.Println("num 等于 20")
} else {
fmt.Println("num 小于 20")
}
}多分枝-switch
go
package main
import "fmt"
func main() {
num := 10
switch num {
case 10:
fmt.Println("num=10")
break
case 20:
fmt.Println("num=20")
break
case 30:
fmt.Println("num=30")
break
default:
fmt.Println("num is unknown")
break
}
}循环结构
与 C 语言不同的是: Go 循环结构只有 for 语句, 没有 while 语句
go
package main
import "fmt"
func main() {
// 第 1 种写法:
// 初始化变量; 结束条件; 值变化语句
for i := 0; i < 10; i++ {
fmt.Println("i =", i)
}
fmt.Println()
// 第 2 种写法:
// 初始化变量; 结束条件
for j := 10; j <= 20; {
fmt.Println("j =", j)
if j == 15 {
j++
continue
}
// 值变化语句
j++
}
fmt.Println()
// 第 3 种写法: 类似 while 循环的写法
k := 20 // i := 0 初始化变量
for k < 30 { // i <= 10 结束条件
fmt.Println("k =", k)
if k == 25 {
break
}
// 值变化语句
k++
}
fmt.Println()
// 第 4 种写法: 使用 range 关键字
for n := range 10 {
fmt.Println("n =", n)
}
fmt.Println()
// 第 5 种写法: 同时获取 索引 和 值
str := "hello world"
for key, val := range str {
fmt.Printf("key = %d, val = %c \n", key, val)
}
}练习: 实现猜数字游戏
获取用户输入
fmt.Scanlnfmt.Scanf
go
package main
import (
"fmt"
)
func main() {
n := 10
fmt.Println("please input a number: ")
// 获取终端输入, &n 将值绑定到变量上
fmt.Scanln(&n)
fmt.Println("the number is: ", n)
}获取一个随机数
math/randrand.Intn(10)
go
package main
import (
"fmt"
"math/rand"
)
func main() {
n := rand.Intn(10)
fmt.Println("the number is: ", n)
}实现:猜数字游戏
主要是为了练习: for循环 + 条件判断
go
package main
import (
"fmt"
"math/rand"
)
func main() {
// 谜底
anwser := rand.Intn(10)
// 机会次数
chances := 3
// 获取用户输入
for chances > 0 {
var input int
fmt.Println("请输入一个 1~10 的数字: ")
fmt.Scanln(&input)
if input > anwser {
chances--
fmt.Println("你猜的数字太大了")
} else if input < anwser {
chances--
fmt.Println("你猜的数字太小了")
} else {
fmt.Println("恭喜你猜对了, 你赢了")
break
}
if chances == 0 {
fmt.Println("很遗憾, 你用完了所有的机会, 你输了")
break
}
fmt.Printf("你还有 %d 次机会 \n", chances)
}
}