Go 基礎知識之分支迴圈
在編寫 Go 程式的時候,我們不僅會用前面學到的資料結構來儲存資料,還會用到 if
、switch
、for
來進行條件判斷和流程控制,今天我們就來一起學習下它們。
if
if
主要用於條件判斷,語法為:
if 條件 {
# 業務程式碼
}
先看一個簡單例子:
package main
import "fmt"
func main() {
age := 7
if age > 6 {
fmt.Println("It's primary school")
}
}
我們可以在條件中使用 &
或 ||
來進行組合判斷:
package main
import "fmt"
func main() {
age := 7
if age > 6 && age <= 12 {
fmt.Println("It's primary school")
}
}
我們還可以使用 if
..else if
..else
來實現多分支的條件判斷:
package main
import "fmt"
func main() {
age := 13
if age > 6 && age <= 12 {
fmt.Println("It's primary school")
} else if age > 12 && age <= 15 {
fmt.Println("It's middle school")
} else {
fmt.Println("It's high school")
}
}
switch
如果我們的條件分支太多,可以考慮使用 switch
替換 if
, 例如:
package main
import "fmt"
func main() {
age := 10
switch age {
case 5:
fmt.Println("The age is 5")
case 7:
fmt.Println("The age is 7")
case 10:
fmt.Println("The age is 10")
default:
fmt.Println("The age is unkown")
}
}
注意:在 Go 中 switch
只要匹配中了就會中止剩餘的匹配項,這和 Java
很大不一樣,它需要使用 break
來主動跳出。
switch
的 case
條件可以是多個值,例如:
package main
import "fmt"
func main() {
age := 7
switch age {
case 7, 8, 9, 10, 11, 12:
fmt.Println("It's primary school")
case 13, 14, 15:
fmt.Println("It's middle school")
case 16, 17, 18:
fmt.Println("It's high school")
default:
fmt.Println("The age is unkown")
}
}
注意: 同一個 case 中的多值不能重複。
switch
還可以使用 if..else
作為 case
條件,例如:
package main
import "fmt"
func main() {
age := 7
switch {
case age >= 6 && age <= 12:
fmt.Println("It's primary school")
case age >= 13 && age <= 15:
fmt.Println("It's middle school")
case age >= 16 && age <= 18:
fmt.Println("It's high school")
default:
fmt.Println("The age is unkown")
}
}
小技巧: 使用 switch
對 interface{}
進行斷言,例如:
package main
import "fmt"
func checkType(i interface{}) {
switch v := i.(type) {
case int:
fmt.Printf("%v is an int\n", v)
case string:
fmt.Printf("%v is a string\n", v)
default:
fmt.Printf("%v's type is unkown\n", v)
}
}
func main() {
checkType(8)
checkType("hello, world")
}
for
使用 for
來進行迴圈操作,例如:
package main
import "fmt"
func main() {
for i := 0; i < 2; i++ {
fmt.Println("loop with index", i)
}
}
使用 for..range
對陣列、切片、map、 字串等進行迴圈操作,例如:
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3}
for i, v := range numbers {
fmt.Printf("numbers[%d] is %d\n", i, v)
}
}
注意: 這裡的 i
、v
是切片元素的位置索引和值。
package main
import "fmt"
func main() {
cityCodes := map[string]int{
"北京": 1,
"上海": 2,
}
for i, v := range cityCodes {
fmt.Printf("%s is %d\n", i, v)
}
}
注意: 這裡的 i
、v
是 map
的 一組鍵值對的鍵和值。
使用 continue
和 break
對迴圈進行控制,例如:
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3, 4, 5}
for i, v := range numbers {
if v == 4 {
break
}
if v%2 == 0 {
continue
}
fmt.Printf("numbers[%d] is %d\n", i, v)
}
}
注意:
-
break
會結束所有迴圈。 -
continue
會跳過當前迴圈直接進入下一次迴圈。
更多閱讀,請關注
- Go 零基礎視訊教學: https://gocn.io/question/1615
- 個人部落格: http://www.songjiayang.com/
- 個人微博: https://weibo.com/songjiayang1
- 個人微信公號:
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 基礎迴圈+識圖
- GO基礎知識分享Go
- react基礎之-- 列表迴圈React
- Go 基礎教程--2-基礎知識Go
- 02go 基礎知識Go
- GO基礎知識分享2Go
- Vue 分支迴圈Vue
- Python基礎學習之迴圈Python
- 遊戲基礎知識——迴歸、凱旋遊戲
- 【基礎題】【for迴圈】二重迴圈
- Go語言:包管理基礎知識Go
- go語言學習-基礎知識Go
- 《快學 Go 語言》第 3 課 —— 分支與迴圈Go
- MySQL指南之基礎知識MySql
- python 基礎 迴圈Python
- JAVASE-Basic(基礎資料+運算子+分支/迴圈結構+陣列)Java陣列
- Go語言入門教程系列——函式、迴圈與分支Go函式
- Python基礎知識之字典Python
- Python基礎知識之集合Python
- Java基礎知識整理之this用法Java
- Java基礎知識之概述(一)Java
- php基礎知識之$GET$POSTPHP
- oracle spatial 基礎知識之五Oracle
- 介面測試之基礎知識
- Go 陷阱之 for 迴圈迭代變數Go變數
- Python基礎(07):迴圈Python
- 指令碼迴圈基礎(2)指令碼
- 12-JavaScript基礎-for迴圈JavaScript
- JAVA基礎--增強for迴圈Java
- php分支和迴圈結構PHP
- JS迴圈和條件分支JS
- GO 學習筆記 《1. 基礎知識》Go筆記
- 【小知識】QueryWrapper迴圈or條件APP
- 基礎知識
- 實驗2_C語言分支與迴圈基礎應用程式設計C語言程式設計
- 實驗2 c語言分支與迴圈基礎應用程式設計1C語言程式設計
- 實驗2 C語言分支與迴圈基礎應用程式設計-1C語言程式設計
- 實驗2C語言分支與迴圈基礎應用程式設計C語言程式設計