[译] part 8: golang if else 语句

栏目: Go · 发布时间: 7年前

内容简介:如果与 C 之类的其他语言不同,即使

if 是条件语句,语法为,

if condition {  
}
复制代码

如果 condition 为 true ,介于 {} 之间的代码块将被执行。

与 C 之类的其他语言不同,即使 {} 之间只有一个语句, {} 也是强制性需要的。

else if 和 else 对于 if 来说是可选的。

if condition {  
} else if condition {
} else {
}
复制代码

if else 的数量不受限制,它们从上到下判断条件是否为真。如果 if else 或者 if 的条件为 true ,则执行相应的代码块。如果没有条件为真,则执行 else 的代码块。

让我们写一个简单的程序来查找数字是奇数还是偶数。

package main

import (  
    "fmt"
)

func main() {  
    num := 10
    if num % 2 == 0 { //checks if number is even
        fmt.Println("the number is even") 
    }  else {
        fmt.Println("the number is odd")
    }
}
复制代码

Run in playground

if num % 2 == 0 语句检查将数字除以 2 的结果是否为零。如果是,则打印 "the number is even" ,否则打印 "the number is odd" 。在上面的程序中,将打印 the number is even 。

if 变量还可以包含一个可选的 statement ,它在条件判断之前执行。语法为

if statement; condition {  
}
复制代码

让我们使用上面的语法重写程序,判断数字是偶数还是奇数。

package main

import (  
    "fmt"
)

func main() {  
    if num := 10; num % 2 == 0 { //checks if number is even
        fmt.Println(num,"is even") 
    }  else {
        fmt.Println(num,"is odd")
    }
}
复制代码

Run in playground

在上面的程序中, num 在 if 语句中初始化。需要注意的一点是, num 仅可从 if 和 else 内部访问。即 num 的范围仅限于 if else 代码块,如果我们尝试从 if 或 else 外部访问 num ,编译器会报错。

让我们再写一个使用 else if 的程序。

package main

import (  
    "fmt"
)

func main() {  
    num := 99
    if num <= 50 {
        fmt.Println("number is less than or equal to 50")
    } else if num >= 51 && num <= 100 {
        fmt.Println("number is between 51 and 100")
    } else {
        fmt.Println("number is greater than 100")
    }

}
复制代码

在上面的程序中,如果 else if num >= 51 && num <= 100 为真,那么程序将输出 number is between 51 and 100

注意事项

else 语句应该在 if 语句结束的 } 之后的同一行开始。如果不是,编译器会报错。

让我们通过一个程序来理解这一点。

package main

import (  
    "fmt"
)

func main() {  
    num := 10
    if num % 2 == 0 { //checks if number is even
        fmt.Println("the number is even") 
    }  
    else {
        fmt.Println("the number is odd")
    }
}
复制代码

Run in playground

在上面的程序中, else 语句没有在 if 语句接近 } 之后的同一行开始。相反,它从下一行开始。 Go 中不允许这样做,如果运行此程序,编译器将输出错误,

main.go:12:5: syntax error: unexpected else, expecting }  
复制代码

原因是 Go 是自动插入分号的。你可以从这个链接查看有关分号插入规则的信息https://golang.org/ref/spec#Semicolons。

在规则中,如果 } 是该行最后的一个标记,go 将会在之后插入分号。因此,在 if 语句的 } 之后会自动插入分号。

所以我们的程序实际是下面这样的,

if num%2 == 0 {  
      fmt.Println("the number is even") 
};  //semicolon inserted by Go
else {  
      fmt.Println("the number is odd")
}
复制代码

因为 {...} else {...} 是一个语句,所以在它的中间不应该有分号。因此,需要将 else 放在`}后的同一行中。

我已经通过在 if 语句的 } 之后插入 else 来重写程序,以防止自动分号插入。

package main

import (  
    "fmt"
)

func main() {  
    if num := 10; num % 2 == 0 { //checks if number is even
        fmt.Println("the number is even") 
    } else {
        fmt.Println("the number is odd")
    }
}
复制代码

Run in playground

现在编译器可以正常执行了。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Stylin' with CSS

Stylin' with CSS

Wyke-Smith, Charles / 2012-10 / $ 50.84

In this completely revised edition of his bestselling Stylin' with CSS, veteran designer and programmer Charles Wyke-Smith guides you through a comprehensive overview of designing Web pages with CSS, ......一起来看看 《Stylin' with CSS》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具