Go 分布式学习利器(4)-- 条件和循环
生活随笔
收集整理的這篇文章主要介紹了
Go 分布式学习利器(4)-- 条件和循环
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 循環語句
- 2. 條件語句
- 2.1 if...else 條件
- 2.2 switch 條件
1. 循環語句
Go語言和其他語言在循環語句上的主要差異是 Go語言僅支持for關鍵字。
語法形式:for i := 5; i > 0; i--,不像其他語言有兩個小括號左右圍著。
兩種不同的循環體語法如下:
- 條件循環
i := 5 for i > 0 {...i-- } - 無限循環
i := 0 for {... }
如下簡單測試代碼:
package loopimport "testing"func TestLoop(t *testing.T) {for i := 0; i < 5; i++{t.Log(i)}n := 5for n > 0{t.Log(n)n--}
}
2. 條件語句
2.1 if…else 條件
Go語言的 if...else條件語句和其他語言的條件語句使用方式類似,基本沒有什么區別,只是沒有小括號的語法。
核心差異主要如下:
- condition 表達式結果必須為bool
- 支持變量賦值
/* if 單分支語法 */
if condition {...
} else {...
}/* if 條件分支語法 */
if condition {...
} else if condition-2 {...
} else {...
}
支持變量賦值的語法 測試程序如下:
package conditionimport "testing"func TestCondition(t *testing.T) {// Go語言的函數支持多返回值,所以可以使用err捕獲函數異常,用來進行賦值判斷。if a,err := acFunc(); err == nil { t.Log("acFunc success!")}else {t.Log("acFunc failed!")}
}
2.2 switch 條件
基本用法和我們其他語言的用法一致
switch os := runtime.GOOS(); os {case "darwin":fmt.Println("OS.X")// break 不需要顯式break退出條件分支判斷case "linux":fmt.Println("Linux.")default:fmt.Printf("%S.",os)
}
和其他編程語言的主要差異如下:
- 條件表達式不限制為常量或者整數(可以是如上案例 字符串的形態)
- 單個case 中可以出現多個結果選項,使用逗號分隔
- 與C語言的規則相反,Go 語言不需要
break明確退出一個case - 可以不設定switch 之后的條件表達式,這種結構之下,整個switch與結構與if…else… 邏輯作用相同
比如單個case 可以出現多個結果選項,使用逗號分隔的測試代碼如下:
func TestMultiCase(t *testing.T) {for i:= 0; i < 5; i++{switch i {case 1,3:t.Log("Even")case 2,4:t.Log("Odd")default:t.Log("other numbers")}}
}
再比如 不設定switch之后的表達式,整個結構就類似if…else…
func TestNoSwitch(t *testing.T) {for i:= 0; i < 5; i++{switch { // switch 之后沒有分支變量case i % 2 == 0:t.Log("Odd")case i % 2 == 1:t.Log("Even")default:t.Log("nothing")}}
}
總結
以上是生活随笔為你收集整理的Go 分布式学习利器(4)-- 条件和循环的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go: 分布式学习利器(3) -- Go
- 下一篇: zookeeper -- Mac 上 I