Go by Example-流控制语句之if/else

Go中的if/else的用法和其他语言没什么区别,在格式要求上保留了类似Python中的一些特性。

基本概念

在条件判断语法 if/else 中,关键字 if 是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行 if 后由大括号括起来的代码块,否则就忽略该代码块继续执行后续的代码,如果有else if就走else if最后走else,然后继续后面的代码。

基本结构

首先看Go语言中 if/else 的结构,大概语法如下

if 布尔表达式1 {
/* 在布尔表达式1为 true 时执行 */
} else if 布尔表达式2{
/* 在布尔表达式2为 true 时执行 */
} else {
/* 在布尔表达式2为 false 时执行 */
}

大多数情况下else if块是没有的,这个大家应该知道就不多说了,说下注意点吧。

1、条件语句不需要使用括号将条件包含起来();

2、无论语句体内有几条语句,花括号{}都是必须存在的;

3、左花括号{必须与if或者else处于同一行;

另外两条会在后面的代码中体现。

4、在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔;

5、在有返回值的函数中,不允许将“最终的”return语句包含在if...else...结构中,否则会编译失败:

代码示例

首先看基本的用法

    if 7%2 == 0 {
fmt.Println("7 是偶数")
} else {
fmt.Println("7 是奇数")
}

很明显我们答案是"7 是奇数"。

一开始的时候,我总是习惯性的把if和else,最后的{换行,也算是写Python的习惯吧,虽然在Python中{用单:代表了,但是两者相同点都是不能把他们单独放在一行。否则编译不通过。

有时候我们有三个判断条件,这时候就可以加入else if了

常见的例子根据分数判断优良以及不合格。

package main
import "fmt"
func main() {
num:=96
//if 85>num>=60 { 不支持链式判断
if num>=60&&num <85 {
fmt.Printf("%d分,可以的",num)
} else if num>=85{
fmt.Printf("%d分,牛逼,优秀",num)
}else {
fmt.Printf("%d分,成绩不太理想",num)
}
}

需要主要一点,Go中的判断条件不像Python,它不支持链式判断。

Go的If条件语句还有一种其他语言没有的使用方法。赋值之后紧接着判断

	num:=96
//if 85>num>=60 { 不支持链式判断
if a:=num;a>60{
fmt.Println("a:",a)
}

那么这种写法有什么用呢?

在Go中调用一个函数(后续文章会单独讲)的时候,大部分情况都会返回两个值,一个是目的值,而一个是一个err错误类型,一般情况会判断程序没有错误再继续执行。


if ok,err:=func();err==nil{
这里就是你要做的事了
}

err==nil成立说明没有错误,所以可以继续执行,但是注意如果这个表达式太长,不建议写在一行,为了提高可读性建议拆开。

最新文章

  1. Linux-安装Oracle(CentOS-Oracle 12c)
  2. iOS-RunTime
  3. 随机采样方法整理与讲解(MCMC、Gibbs Sampling等)
  4. HDU 3255 Farming (线段树+扫面线,求体积并)
  5. VS2010 Chromium编译
  6. 【转】关于oracle with as用法
  7. CoreData多表操作.
  8. Appium Android Bootstrap源码分析之命令解析执行
  9. ASP.NET MVC学习笔记-----Filter
  10. 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
  11. #DP# ----- OpenJudge山区建小学
  12. _1Python简介 安装及版本检测
  13. C语言中的内存分配
  14. 爬虫Scrapy框架运用----房天下二手房数据采集
  15. 上传图片,通过node服务器存储在指定目录
  16. Git 通过ssh 配置基于Host的差异配置
  17. CAS部署在Windows上
  18. python相关的安装软件
  19. Jmeter学习之-http接口功能测试-入门
  20. Haproxy的三种保持客户端会话保持方式

热门文章

  1. 【转载】C#中将字符串分割成字符数组
  2. UI5-技术篇-Hybrid App-1-Barcode扫描
  3. python小实例——tkinter实战(计算器)
  4. Vue组件component创建及使用
  5. 【leetcode】513.Find Bottom Left Tree Value
  6. ubuntu18.04 安装android studio
  7. android开机启动流程说明
  8. Django组件之用户认证
  9. Sketch 61 UI设计必备软件下载
  10. TIME_WAIT状态全是3306解决办法