这是 Go
系列的第二篇文章,主要介绍 if/else,switch 和函数的各种用法。
系列整理:
如果对 Go
语言本身感兴趣,可以阅读我的这篇译文 Go语言的优点,缺点和令人厌恶的设计。
if/else
// 声明可以先于条件,if 中的声明的变量只在此 if/else 有效 if num := 9; num < 0 { } else if num < 10 { } else { }
switch
// 普通 switch switch time.Now().Weekday() { // 可以用逗号写多个值 case time.Saturday,time.Sunday: fmt.Println("It's the weekend") default: fmt.Println("It's the weekday") } // 无表达式额的 switch switch { 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,3) fmt.Println(c)