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

相关推荐

  • bind

    文章目录bind补充说明语法选项实例 bind 显示或设置键盘按键与其相关的功能 补充说明 bind命令 用于显示和设置命令行的键盘序列绑定功能。通过这一命令,可以提高命令行中操作…

    入门教程 2023年 12月 6日
  • ulimit

    文章目录ulimit补充说明语法选项实例 ulimit 控制shell程序的资源 补充说明 ulimit命令 用来限制系统用户对shell资源的访问。如果不懂什么意思,下面一段内容…

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

    文章目录return概要主要用途参数返回值例子注意 return 从函数中退出并返回数值。 概要 return [n] 主要用途 使得shell函数退出并返回数值,如果没有指定n的…

    入门教程 2024年 3月 4日
  • telnet

    文章目录telnet补充说明语法选项参数实例 telnet 登录远程主机和管理(测试ip端口是否连通) 补充说明 telnet命令 用于登录远程主机,对远程主机进行管理。telne…

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

    文章目录dump补充说明语法选项参数实例 dump 用于备份ext2或者ext3文件系统 补充说明 dump命令 用于备份ext2或者ext3文件系统。可将目录或整个文件系统备份至…

    入门教程 2023年 12月 7日
  • nc

    文章目录nc补充说明语法选项实例 nc nc是网络工具中的瑞士军刀 补充说明 nc命令 全称netcat,用于TCP、UDP或unix域套接字(uds)的数据流操作,它可以打开TC…

    入门教程 2024年 1月 10日
  • 常量

    文章目录常量定义常量字符串常量布尔常量数值常量数值表达式 常量 上一节:第四篇 类型下一节:第六篇 函数 这是本Golang系列教程的第五篇。 定义常量 常量(constant)表…

    2023年 12月 5日
  • ls

    文章目录ls补充说明语法选项参数实例扩展知识不同颜色代表的文件类型 ls 显示目录内容列表 补充说明 ls命令 就是list的缩写,用来显示目标列表,在Linux中是使用率较高的命…

    入门教程 2023年 12月 19日
  • Helm | Helm 拉取

    文章目录helm pull简介可选项从父命令继承的命令请参阅 helm pull 从仓库下载并(可选)在本地目录解压 简介 从包仓库中检索包并下载到本地。 对于要获取检查,修改或重…

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

    文章目录userdel补充说明语法选项参数实例 userdel 用于删除给定的用户以及与用户相关的文件 补充说明 userdel命令 用于删除给定的用户,以及与用户相关的文件。若不…

    入门教程 2024年 3月 11日

发表回复

登录后才能评论
Translate »