if else 语句

if else 语句

上一节:第七篇 包
下一节:第九篇 循环语句

这是本Golang系列教程的第8篇。

if 是一个条件语句。if 语句的语法为:

if condition {  
}

如果 condition 为 true,那么就执行 { 和 } 之间的代码。与其它语言(如C)不同,即使 {} 之间只有一条语句,{} 也是必需的。

if 语句后面可以接可选的 else if 和 else 语句:

if condition {  
} else if condition {
} else {
}

if 后面可以接任意数量的 else if 语句。condition 的求值由上到下依次进行,直到某个 if 或者 else if 中的 conditiontrue 时,执行相应的代码块。如果没有一个 conditontrue,则执行 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")
    }
}

if num % 2 == 0 语句检测一个数除以 2 的余数是否为 0,如果是则输出:"the number is even",否则输出:"the number is odd"。以上程序输出:the number is even

if 语句还有如下的变体。这种形式的 if 语句先执行 statement,然后再判断 conditon

if statement; condition {  
}

让我们用这种形式的 if 改写上面的程序:

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")
    }
}

在上面的程序中, numif 语句中初始化。需要注意的一点是,num 只能在 if 和 else 里面进行访问,即 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 <= 100true,因此程序将输出: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")
    }
}

在上面的程序中,else 语句没有在 if 语句 } 结束后的同一行中开始,而是从下一行开始的。Go中不允许这样做。如果你运行这个程序,编译器会输出错误:

main.go:12:5: syntax error: unexpected else, expecting }  

这是由于Go会自动插入分号,点击链接了解分号插入规则:https://golang.org/ref/spec#Semicolons

在分号插入规则中,如果 } 是当前一行的最后一个字符,那么 } 后面会被插入一个分号。所以在上面的例子中,if语句的 } 之后会被自动插入一个分号。

所以实际上我们的程序变成了:

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

你可以看到第三行中插入了一个分号。

由于 if{...} else {...} 是一个单独的语句,分号不应该出现在语句的中间。因此,else 需要放在 } 之后的同一行中。

我重新改写了程序,将 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")
    }
}

现在编译器就可以正常编译我们的程序了。

希望你喜欢阅读。请留下宝贵的意见和反馈:)

若文章对你有帮助,可以点赞或打赏支持我们。发布者:Aurora,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/8-if-else-%e8%af%ad%e5%8f%a5/

(0)
AuroraAurora站点维系者
上一篇 2023年 12月 5日 下午6:03
下一篇 2023年 12月 5日 下午6:05

相关推荐

  • vgconvert

    文章目录vgconvert补充说明语法选项参数实例 vgconvert 转换卷组元数据格式 补充说明 vgconvert命令 用于转换指定LVM卷组的元数据格式,通常将“LVM1”…

    入门教程 2024年 3月 11日
  • tempfile

    文章目录tempfile补充说明tempfile命令$$变量 tempfile shell中给临时文件命名 补充说明 有时候在写Shell脚本的时候需要一些临时存储数据的才做,最适…

    入门教程 2024年 3月 11日
  • info

    文章目录info补充说明语法选项参数实例 info Linux下info格式的帮助指令 补充说明 info命令 是Linux下info格式的帮助指令。 就内容来说,info页面比m…

    入门教程 2023年 12月 19日
  • Git 工作区、暂存区和版本库

    基本概念 我们先来理解下 Git 工作区、暂存区和版本库概念: 工作区:就是你在电脑里能看到的目录。 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 i…

    2024年 4月 30日
  • mapfile

    文章目录mapfile概要主要用途选项参数返回值例子注意 mapfile 从标准输入读取行并赋值到数组。 概要 mapfile [-d delim] [-n count] [-O …

    入门教程 2024年 1月 3日
  • ifconfig

    文章目录ifconfig补充说明语法参数实例 ifconfig 配置和显示Linux系统网卡的网络参数 补充说明 ifconfig命令 被用于配置和显示Linux内核中网络接口的网…

    入门教程 2023年 12月 19日
  • find

    文章目录find补充说明语法选项参数实例根据文件或者正则表达式进行匹配否定参数根据文件类型进行搜索基于目录深度搜索根据文件时间戳进行搜索根据文件大小进行匹配删除匹配文件根据文件权限…

    入门教程 2023年 12月 14日
  • mysqlimport

    文章目录mysqlimport补充说明语法选项参数 mysqlimport 为MySQL服务器用命令行方式导入数据 补充说明 mysqlimport命令 为mysql数据库服务器提…

    入门教程 2024年 1月 3日
  • ln

    文章目录ln补充说明语法选项参数实例扩展知识软链接:硬链接符号链接(软连接) ln 用来为文件创建链接 补充说明 ln命令 用来为文件创建链接,链接类型分为硬链接和符号链接两种,默…

    入门教程 2023年 12月 19日
  • 函数

    文章目录函数什么是函数?函数声明函数的例子多个返回值命名返回值空指示符 函数 上一节:第五篇 常量下一节:第七篇 包 这是本Golang系列教程的第6篇。 什么是函数? 函数是执行…

    2023年 12月 5日

发表回复

登录后才能评论
Translate »