這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
這是 Go
系列的第二篇文章,主要介紹 if/else , switch 和函數的各種用法。
系列整理:
如果對 Go
語言本身感興趣,可以閱讀我的這篇譯文 Go語言的優點,缺點和令人厭惡的設計。
if/else
// 聲明可以先於條件,if 中的聲明的變數只在此 if/else 有效if num := 9; num < 0 { } else if num < 10 { } else { }
switch
// 普通 switchswitch time.Now().Weekday() { // 可以用逗號寫多個值 case time.Saturday, time.Sunday: fmt.Println("It's the weekend") default: fmt.Println("It's the weekday")}// 無運算式額的 switchswitch { case t.Hour() < 12: fmt.Println("It's before noon") default: fmt.Println("It's after noon")}// 比較類型whatAmI := func(i interface{}) { switch t := i.(type) { case bool: fmt.Println("I'm a bool") case int: fmt.Println("I'm a int") default: fmt.Printf("Don't know type %T\n", t) }}whatAmI(true)whatAmI(1)whatAmI("hey")
迴圈
// 經典的迴圈for n := 0; n <= 5; n++ { if n % 2 == 0 { continue } fmt.Println(n)}// 只有條件for i <= 3 { fmt.Println(i) i = i + 1 }// 死迴圈for { fmt.Println("loop") break}
實際測試
將整數轉換為二進位表示
func convertToBin(v int) string { result := "" for ; v > 0; v /= 2 { result = strconv.Itoa(v % 2) + result } return result}
函數
// 閉包函數func apply(op func(int, int) int, a, b int) int { return op(a, b)}func main() { result := apply(func(i int, i2 int) int { return int(math.Pow(float64(i), float64(i2))) }, 2, 2) fmt.Println(result)}// 可變參數func sum(num ... int) int { var result = 0 for _, v := range num { result = result + v } return result}c := sum(1, 2, 3)fmt.Println(c)