程序需要根据不同的条件进行不同的处理, 我们程序不可能只按着某一个顺序一路执行下去,比如我们经常会遇到的这样一种情况:如果某一个文件存在,则将新内容更新至已有文件,如果文件不存在,则先创建文件,这个时候我们就可以使用if - else 控制结构了,在Go中,该控制结构如下:

if some_boolean_expression {
    // 如果 some_boolean_expression 为 true,则会执行这里
} else if alternate_boolean_expression {
    // 如果 some_boolean_expression 为 false 并且 alternate_boolean_expression为 true,则执行这里
} else {
    // 如果上面的所有判断都为 false ,才能执行这里
}

注意事项 :

  • 在上面的结构说明,some_boolean_expression 以及 alternate_boolean_expression 的计算结果只能是 true 或者 false 里面的一个,不能为其它的值;
  • 对于判断声明,括号不是必须的,你可以为其添加一个括号,但是这是没必要的;
  • 与其它语言不同的是,Go要求左花括号必须与 if 或者 else 处于同一行内,就会报错,详情看写 GO 程序中一些常见的语法和其它错误
  • int 类型的数据不能作为判断声明的结果被 if-else使用。

下面这些是条件判断的比较操作符:

  • == : 等于
  • != : 不等于
  • < : 小于
  • <= : 小于或等于
  • > : 大于
  • >= : 大于或等于
  • && : 和(并且/与)
  • || : 或

下面是一个最很简单的示例:

package main
import "fmt"
func main() {
    if true {
        fmt.Println("这里会执行")
    }
    if false {
        fmt.Println("这里不会执行")
    }
}

输出很很简单,就是打印出“这里会执行”这五个字符,下面这个示例则使用了一些判断操作符:

package main
import "fmt"
func main() {
    a, b := 4, 5
    if a < b {
        fmt.Println("a < b")
    } else if a > b {
        fmt.Println("a > b")
    } else {
        fmt.Println("a = b")
    }
}

输入结果为 a < b,对于有其它语言编程经验的人来说,下面这些错误可能会经常出现:

// 非布尔值 5
if 5 {}
// 非布尔值 s
var s string
if s {}
// 非布尔值 e
var e os.Error
if e {}
// if 声明与左大括号不在一行内
if true
{}
// else 与 右大括号不在一行
if true {
}
else {
}

标签: none

评论已关闭