Go 第二部分:分支语句、函数

彼得堡的遗书 · · 865 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

这是 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, 2, 3)

fmt.Println(c)

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:彼得堡的遗书

查看原文:Go 第二部分:分支语句、函数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

865 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传