[译] part 8: golang if else 语句

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

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

if 是条件语句,语法为,

if condition {  
}
复制代码

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

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

else ifelse 对于 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

在上面的程序中, numif 语句中初始化。需要注意的一点是, num 仅可从 ifelse 内部访问。即 num 的范围仅限于 if else 代码块,如果我们尝试从 ifelse 外部访问 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

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


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

查看所有标签

猜你喜欢:

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

疯狂又脆弱  坚定又柔软

疯狂又脆弱 坚定又柔软

朱墨 / 湖南文艺出版社 / 2018-3 / 39.80元

《疯狂又脆弱 坚定又柔软》是朱墨的一部作品集,介绍了作者考研到北京,工作在华谊,以及留学去英国的经历,在这短短几年中她一路升职加薪,25岁升任华谊宣传总监,27岁赚到人生的第一笔100万,30岁却毅然离职去英国留学,在表面的光鲜亮丽之下,她也曾付出过外人所不知道的心血和努力。她的人生告诉我们,每一个身居高位或者肆意潇洒的人,都曾为梦想疯狂地倾尽全力,而那些心怀梦想的人也总是怀揣一颗坚定又柔软的内心......一起来看看 《疯狂又脆弱 坚定又柔软》 这本书的介绍吧!

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

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具