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

相关推荐

  • bzip2recover

    文章目录bzip2recover补充说明语法参数 bzip2recover 恢复被破坏的.bz2压缩包中的文件 补充说明 bzip2recover命令 可用于恢复被破坏的“.bz2…

    入门教程 2023年 12月 6日
  • 创建第一款iPhone应用程序

    现在让我们来创建一个在iOS模拟器上运行的简单视图应用(空白的应用程序)。 操作步骤如下: 1、打开Xcode并选择创建一个新的Xcode项目。 然后选择单一视图应用程序 接下来输…

    2023年 3月 29日
  • Java 继承

    文章目录继承的概念生活中的继承:类的继承格式类的继承格式为什么需要继承企鹅类:老鼠类:公共父类:企鹅类:老鼠类:继承类型继承的特性继承关键字extends关键字 继承的概念 继承是…

    2023年 3月 9日
  • pgrep

    文章目录pgrep补充说明语法选项参数实例 pgrep 根据用户给出的信息在当前运行进程中查找并列出符合条件的进程ID(PID) 补充说明 pgrep命令 以名称为依据从运行进程队…

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

    文章目录lilo补充说明语法选项实例 lilo 安装核心载入开机管理程序 补充说明 lilo命令 用于安装核心载入,开机管理程序。lilo是个Linux系统核心载入程序,同时具备管…

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

    文章目录chroot补充说明语法选项参数实例 chroot 把根目录换成指定的目的目录 补充说明 chroot命令 用来在指定的根目录下运行指令。chroot,即 change r…

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

    文章目录fdisk补充说明语法选项参数实例 fdisk 查看磁盘使用情况和磁盘分区 补充说明 fdisk命令 用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非…

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

    文章目录shuf概要主要用途选项参数返回值例子注意 shuf 产生随机的排列。 概要 shuf [OPTION]… [FILE] shuf -e [OPTION]… [AR…

    入门教程 2024年 3月 5日
  • ncftp

    文章目录ncftp补充说明语法选项参数安装实例 ncftp 是增强的的FTP工具 补充说明 ncftp命令 是增强的的ftp工具,比传统的FTP指令更加强大。FTP让用户得以下载存…

    入门教程 2024年 1月 10日
  • iOS操作(action)和输出口(Outlet)

    简介 在iOS中,操作(action)和输出口(Outlet)指的是ibActions和ibOutlets,也就是ib接口生成器所在的地方。这些都和UI元素相关,我们将直观的了解他…

    2023年 4月 10日

发表回复

登录后才能评论
Translate »