golang笔记——流程控制

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

条件语句

  if ... else if ... else 语句,如:

if num > 100{
    fmt.Println(">100")    
} else if 0 < num {
    fmt.Println("<0")
} else {
    fmt.Println("0<<num<<100")
}

 

循环语句

  GO语言中的 switch 语句分为两种,一种是表达式 switch 语句,和其它语言中的 switch 使用方法相同;另一种是类型判断 switch 语句,它类似于类型断言,但使用 type 关键字来充当被判断的类型。

  表达式 switch 示例如下:

    //表达式 switch
    switch content := getContent(); content {
    default:
        fmt.Println("Unknow language")
    case "Lua":
        break
    case "Python":
        fmt.Println("python")
    case "C", "C++", "Java":
        fmt.Println("A compiled language")
    }

  类型判断 switch 语句示例如下:

    v := "3"
    switch interface{}(v).(type) {
    case string:
        log.Printf("Thie string is '%s'.\n", v)
    case int, uint, int8, uint8, int16, uint16:
        log.Printf("Thie integer is %d.\n", v)
    default:
        log.Printf("Unsupported value.(type=%T)\n", v)
    }

  此外,switch 语句还可以实现串联 if 语句的替代方案,可以使代码看起来更清晰易读,在 switch 表达式缺失的情况下, switch 判定目标会被视为布尔类型,第一个返回 true 的 case 表达式将会被执行,如:

    switch {
    case num > 100:
        log.Println(">100")
    case num < 0:
        log.Println("<0")
    default:
        log.Println("0<<num<<100")
    }

  for语句有三种用法,一是常规用法,结构先后是初始化子句、条件、后置子句,如:

    sum := 0
    for i := 0; i < 100; i++ {
        sum += i
    }

  二是类似其它语言中 while 的作用,注意GO语言中没有while循环,如:

    i := 0
    for i < 100 {
        i += 2
    }

  三是类似其它语言中 foreach 的作用,用来迭代数组和字典等类型,如:

    m := map[string]int{"A": 1, "B": 2}
    for k, _ := range m {
        log.Print(k)
    }

  注意:if/for/switch 语句都可以接受一个可选的初始化子句; break\continue\goto 语句都可以跳转到指定标记,标记的定义使用 "标识符:" 的形式。

 

goto语句

  goto语句只能配合标记来执行,跳转到指定位置,该语句在其它语言中很有争议,一般为了代码可读性都不推荐使用。

 

defer语句

  GO语言特有的一个流程控制语句,它用来预定对一个函数的调用。它只能出现在一个函数中(假设是A函数),且只能调用另一个函数(假设是B函数),意味着在A函数结束返回时,延迟调用B函数,一般用于打开文件时的资源清理等工作。如果一个函数内部调用多个 defer 语句,则遵循后进先出的原则。defer 语句后面可以跟着匿名函数,来快速实现一些临时的功能。defer 调用的函数可以使用的变量,可以是通过参数传进来的,也可以是上下文中可以调用的变量,如果是传参进来的,则会立即被求值,如果是上下文中的变量,则不会立即被求值,而是取在 defer 函数调用时的值,这一点要注意。

 

异常处理语句

  switch 语句


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

本文来自:博客园

感谢作者:tianyajuanke

查看原文:golang笔记——流程控制

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

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