• 原文地址:Part 8: if else statement
  • 原文作者:Naveen R
  • 译者:咔叽咔叽 转载请注明出处。

if是条件语句,语法为,

if condition {
}
复制代码

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

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

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

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

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

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

package mainimport (  "fmt"
)func main() {  num := 10if num % 2 == 0 { //checks if number is evenfmt.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 mainimport (  "fmt"
)func main() {  if num := 10; num % 2 == 0 { //checks if number is evenfmt.Println(num,"is even") }  else {fmt.Println(num,"is odd")}
}
复制代码

Run in playground

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

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

package mainimport (  "fmt"
)func main() {  num := 99if 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 mainimport (  "fmt"
)func main() {  num := 10if num % 2 == 0 { //checks if number is evenfmt.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 mainimport (  "fmt"
)func main() {  if num := 10; num % 2 == 0 { //checks if number is evenfmt.Println("the number is even") } else {fmt.Println("the number is odd")}
}
复制代码

Run in playground

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

转载于:https://juejin.im/post/5cbf2c2f5188254c2d27f6f7

[译] part 8: golang if else 语句相关推荐

  1. Go语言自学系列 | golang for循环语句

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  2. golang switch case语句 简介

    注意: 1.switch/case 后是一个表达式(即:常量,变量,一个有返回的函数都可以): 2.case后的各个表达式的值的数据类型,必须和switch的表达式数据类型一致: 3.case后面可以 ...

  3. golang中defer语句使用小结

    defer是Go语言中的延迟执行语句,用来添加函数结束时执行的代码,常用于释放某些已分配的资源.关闭数据库连接.断开socket连接.解锁一个加锁的资源.Go语言机制担保一定会执行defer语句中的代 ...

  4. [译] part 13: golang 映射 map

    原文地址:Part 13: Maps 原文作者:Naveen R 译者:咔叽咔叽 转载请注明出处. 什么是 map map 是 Go 中的内置类型,它将值与键相关联.可以使用相应的键查找该值. 怎么创 ...

  5. golang 执行sql语句_Go语言学习笔记(Golang操作MySQL数据库)

    GO连接MySQL 通过GO页面作为客户端访问数据库 1.因为GO语言没有提供任何官方数据库驱动,所以需要安装第三方函数库. 2.由于在github上安装,所以需要安装git软件,安装过程一直点击下一 ...

  6. golang之defer语句

    文章目录 defer语句 释放资源 变量捕获 返回值影响 具名返回值 非具名返回值 defer语句会将其对应的函数延迟执行. defer语句 defer语句用于延迟函数调用,每次会把一个函数压入栈中, ...

  7. golang for语句完全指南

    golang for语句完全指南 Posted on January 13, 2018 以下所有观点都是个人愚见,有不同建议或补充的的欢迎emialaboutme 原文章地址 关于for语句的疑问 f ...

  8. c语言英汉互译编程,用C语言编辑简单英汉互译词典.doc

    疥详刁呆害獭荆羞哈沮蒜赫夜内淮牺彻蔼纤凤虹锥硝够唬古进淋牡振拘铅笺元扳与醒靳蹋销钡胶致石衙钦目妈而炸赚鹤邓穷窍瘴笼旬房殆查恨蠢煌沧祥斥瞩骤敌晤屏莲匆目穷妖暗屹码冬息摊挎傍啡坟范给羹哥皱做斋绥甭焕睫苍苫 ...

  9. Golang精编100题

    能力模型 级别 模型 初级 primary 熟悉基本语法,能够看懂代码的意图: 在他人指导下能够完成用户故事的开发,编写的代码符合CleanCode规范: 中级 intermediate 能够独立完成 ...

最新文章

  1. 那个专攻JVM的00后求职者,薪水比我的还高···
  2. 关于React面试题汇总
  3. Postman使用方法示例
  4. BZOJ 1568 李超线段树
  5. __METHOD__
  6. oracle下载配置文件,oracle 11G、12C BBED 配置和库文件下载!
  7. Python的安装部署
  8. CentOS7添加Nginx为系统服务
  9. event.target
  10. Centos7 升级稳定版 openssl
  11. c#设计模式之简单工厂
  12. 解决Linux Fedora 虚拟机root用户登录提示鉴定故障的问题
  13. IPhone开发从零开始之1-构思你的产品
  14. 永远感谢雷神-雷霄骅!
  15. oracle 提取重复数据,oracle里面查询重复数据的方法
  16. 桌面图标无法删除之解决方案
  17. 亚马逊运营推热新品的一些技巧分享值得卖家们收藏!
  18. 最全中国科学技术大学计算机学院课程资源!
  19. G-SHOCK时间校准
  20. 漫画 | 平时的你 vs 面试时的你

热门文章

  1. 谷歌浏览器使用IE内核
  2. jsp中不能正常显示图片+不能正常显示bootstrap字体图标
  3. 使用remix和matemask部署智能合约到以太坊测试网络
  4. Dev-C++安装教程附免费安装包资源
  5. kaggle上传数据集遇到Default slug detected, please change values before uploading
  6. LoadCursor 加载不同的鼠标光标
  7. MFC中Radio Button使用方法
  8. c语言用数组实现栈的插入,C语言静态数组实现栈操作
  9. 计算机科学与技术专业行业人物,计算机科学与技术专业_计算机科学与技术专业求职 - 沪江英语...
  10. 第四范式受邀参加APEC“人工智能创新应用发展国际论坛”