Golang 流程控制(if、switch)
if判斷
if
示例:
package main
import "fmt"
func main() {
var yes string
fmt.Print("有沒有賣西瓜的:")
fmt.Scan(&yes)
fmt.Print("老婆的想法:買十個包子")
if yes == "y" || yes == "yes" || yes == "Y" || yes == "YES" {
fmt.Println("和一個西瓜")
}
fmt.Println("老公的想法:")
if yes == "y" || yes == "yes" || yes == "Y" || yes == "YES" {
fmt.Println("買一個包子")
} else {
fmt.Println("買十個包子")
}
}
F:\GO>go run f:\go\Process.go
有沒有賣西瓜的:y
老婆的想法:買十個包子和一個西瓜
老公的想法:
買一個包子
F:\GO>go run f:\go\Process.go
有沒有賣西瓜的:n
老婆的想法:買十個包子老公的想法:
買十個包子
elas if
示例:
package main
import "fmt"
func main() {
fmt.Print("你的成績是:")
var num int
fmt.Scan(&num)
if num > 90 {
fmt.Println("A")
} else if num >= 80 {
fmt.Println("B")
} else if num >= 70 {
fmt.Println("C")
} else if num >= 60 {
fmt.Println("D")
} else {
fmt.Println("不及格")
}
}
你的成績是:99
A
switch
單值判斷
package main
import (
"fmt"
)
func main() {
var yes string
fmt.Print("有沒有賣西瓜的:")
fmt.Scan(&yes)
fmt.Print("老婆的想法:買十個包子")
switch yes {
case "y", "Y" :
fmt.Println("和一個西瓜")
}
fmt.Println("老公的想法:")
switch yes {
case "y", "Y" :
fmt.Println("買一個包子")
default:
fmt.Println("買十個包子")
}
}
有沒有賣西瓜的:y
老婆的想法:買十個包子和一個西瓜
老公的想法:
買一個包子
多值
package main
import (
"fmt"
)
func main() {
fmt.Print("你的成績是:")
var num int
fmt.Scan(&num)
switch {
case num > 90:
fmt.Println("A")
case num >= 80:
fmt.Println("B")
case num >= 70:
fmt.Println("C")
case num >= 60:
fmt.Println("D")
default:
fmt.Println("不及格")
}
}
你的成績是:99
A
fot循環
for 循環
方法一
package main
import "fmt"
func main() {
//索引:記錄已經加到了多少
//記錄結果
result := 0
//初始化子語句;條件子語句;後置子語句
for i :=1 ; i <= 100 ; i++{
result += i
}
fmt.Println(result)
}
5050
方法二
package main
import "fmt"
func main() {
result := 0
i := 0
for i <= 100 {
result += i
i ++
}
fmt.Println(result)
}
5050
死循環
package main
import (
"fmt"
)
func main() {
i := 0
for {
fmt.Println(i)
}
}
0
0
··· ···
0
for range
package main
import "fmt"
func main() {
desc := "我愛中國"
//i := 0
for i , ch := range desc {
fmt.Printf("%d, %T, %q\n", i, ch ,ch)
i ++
}
}
0, int32, '我'
3, int32, '愛'
6, int32, '中'
9, int32, '國'
continue、break
- continue:結束本次循環進行下次循環
- break:結束循環
import (
"fmt"
)
func main() {
fmt.Println("----continue----")
for i := 0 ; i <= 5 ; i++ {
if i == 4 {
continue
//跳出本次循環,進行下一次循環
}
fmt.Println(i)
}
fmt.Println("----break----")
for i := 0 ; i <= 5 ; i++ {
if i == 4 {
break
//終止循環
}
fmt.Println(i)
}
}
----continue----
0
1
2
3
5
----break----
0
1
2
3
goto
goto打印1+2+3+…100
package main
import "fmt"
func main() {
result, i := 0, 0
START:
if i > 100 {
goto FOREND
}
result += i
i ++
goto START
FOREND:
fmt.Println(result)
}
5050
跳轉
package main
import "fmt"
func main() {
fmt.Print("有沒有賣西瓜的:")
var yes string
fmt.Scan(&yes)
fmt.Print("老婆的想法:買十個包子")
if yes != "Y" && yes != "y" {
goto END
}
fmt.Print("和一個西瓜!")
END:
F:\GO>go run f:\go\goto.go
有沒有賣西瓜的:y
老婆的想法:買十個包子和一個西瓜!
F:\GO>go run f:\go\goto.go
有沒有賣西瓜的:n
老婆的想法:買十個包子
break跳轉
- 跳轉標籤需要定義在循環體前面
package main
import "fmt"
func main() {
BREAKEND:
for i := 0 ; i < 3 ; i++ {
for j := 0 ; j < 3 ; j++ {
if i * j == 4 {
break BREAKEND
}
fmt.Println(i, j , i * j)
}
}
}
0 0 0
0 1 0
0 2 0
1 0 0
1 1 1
1 2 2
2 0 0
2 1 2
package main
import (
"fmt"
)
func main() {
var j,i = 1,1
for j <= 9 {
if i == j {
fmt.Printf("%v %v %v %v %v\t", i, "*", j, "=", i*j)
j++
//fmt.Print(i,j)
} else if i < j {
fmt.Printf("%v %v %v %v %v\t", i, "*", j, "=", i*j)
i++
//fmt.Println(i,j)
}
}
}
練習
打印乘法口訣
package main
import "fmt"
func main() {
for i :=1 ; i < 10 ; i ++ {
for j :=1 ; j < 10 ; j++ {
fmt.Print(j, "*",i , "=", i * j, "\t")
if i == j {
fmt.Println()
break
}
}
}
}
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81