前言
流程控制:
- 分支判斷
- if ; else if ; else
- switch case
- select : channel
- 迴圈
- for
- go to 跳轉,當條件成立跳 某個地方執行 todo。
if
package main
import "fmt"
func main() {
/*
流程控制:
- 分支判斷
- if ; else if ; else
- switch case
- select : channel
- 迴圈
- for
- go to 跳轉,當條件成立跳 某個地方執行 todo。
*/
// if 條件判斷
var num int = 15
if num > 100 {
fmt.Println("num > 100")
} else if num < 0 {
fmt.Println("num < 100")
} else {
fmt.Println("0 < num < 100")
}
// 練習 if 密碼判斷. 輸入兩次密碼,第一次成功,第二次輸入則二次校驗,否則使用者密碼校驗失敗
fmt.Println("請輸入使用者名稱和密碼:")
// scan 阻塞等待
var username string
var password1 string
var password2 string
fmt.Scan(&username)
fmt.Scan(&password1)
if password1 == "123" && username == "admin" {
fmt.Println("請再次輸入密碼:")
fmt.Scan(&password2)
if password2 == "123" {
fmt.Println("密碼校驗成功")
} else {
fmt.Println("密碼二次校驗失敗!")
}
} else {
fmt.Println("密碼校驗失敗!")
}
// switch case 條件判斷
var num2 int = 2
switch num2 {
case 1:
fmt.Println("num2: 1")
case 2:
fmt.Println("num2: 2")
}
}
多條件 if
package main
import "fmt"
func main() {
// 分數校驗
fmt.Println("請輸入你的成績:")
var score int = 60
fmt.Scan(&score)
if score >= 90 && score <= 100 {
fmt.Println("A")
} else if score >= 80 && score <= 90 {
fmt.Println("B")
} else if score >= 70 && score <= 80 {
fmt.Println("C")
} else if score >= 60 && score <= 70 {
fmt.Println("D")
} else if score >= 0 && score <= 60 {
fmt.Println("E")
} else {
fmt.Println("輸入不合法!")
}
}
switch case
package main
import "fmt"
func main() {
/* switch case default*/
// case 可以寫多個條件
var score int = 61
switch score {
case 100:
fmt.Println("A")
case 90:
fmt.Println("B")
case 80:
fmt.Println("C")
case 70:
fmt.Println("D")
case 60, 61:
fmt.Println("E")
default:
fmt.Println("未知數")
}
// switch 省略條件。 預設 條件 真true
switch {
case false:
fmt.Println("false")
case true:
fmt.Println("true")
default:
fmt.Println("default")
}
}
switch case fallthrough
// fallthrough 擊穿switch case。 理解:一旦使用 fallthrough ,則會強制執行下面的case語句
// 場景: 中斷case判斷。 使用極少!!!
a := false
switch a {
case false:
fmt.Println("fallthrough1")
fallthrough
case true:
fmt.Println("fallthrough2")
default:
fmt.Println("fallthrough3")
}
switch case break
// switch break. 中斷後續判定
b := false
switch b {
case false:
fmt.Println("break1")
if b == false {
break
}
case true:
fmt.Println("brea2")
default:
fmt.Println("break3")
}
for 迴圈
- 終止迴圈
- break : 結束整個迴圈,立即停止
- continue :結束當前這次迴圈,繼續進行下一次迴圈
package main
import "fmt"
func main() {
/* go 中的迴圈 */
// for 起始init,結束end,條件condition,自增/自減
num := 0
for i := 0; i <= 10; i++ {
num += i
fmt.Println("each num and i:", num, i)
}
fmt.Println("num count:", num)
// for break continue
for i := 0; i < 10; i++ {
if i == 5 {
fmt.Println("break:終止,i:", i)
break
}
if i == 3 {
fmt.Println("contiune: 跳過,i:", i)
continue
}
fmt.Println("迴圈輸出 i:", i)
}
// for range 迴圈可迭代資料結構:陣列,字串,字典...
for i, i2 := range "hello word" {
fmt.Println("下標:", i, "列印字元:", i2)
}
// for 作業 列印 5 * 5 的 矩陣:
for i := 0; i < 6; i++ {
for j := 0; j < 6; j++ {
fmt.Print("* ")
}
fmt.Println()
}
// 死迴圈: for {}
for {
fmt.Println("Hello go")
}
}
go for 列印菱形
package main
import "fmt"
func main() {
// for 作業
// 1. 9 * 9 乘法口訣表
for i := 1; i < 10; i++ {
for j := 1; j < 10; j++ {
if j <= i {
fmt.Printf("%d * %d = %d ; ", j, i, i*j)
}
}
fmt.Println()
}
// 2. 菱形
for i := 1; i < 6; i++ {
for j := 1; j <= 6-i; j++ {
fmt.Print(" ")
}
for j := 0; j < 2*i-1; j++ {
fmt.Print("*")
}
fmt.Println()
}
for i := 4; i >= 1; i-- {
for j := 1; j <= 6-i; j++ {
fmt.Print(" ")
}
for j := 0; j < 2*i-1; j++ {
fmt.Print("*")
}
fmt.Println()
}
}