Go 语言流程控制 选择结构 if

优质
小牛编辑
138浏览
2023-12-01

Go 语言流程控制和 C 语言一样,也有三大流程控制结构

  • 顺序结构 默认结构
  • 选择结构 if / switch
  • 循环结构 for

选择结构 if

和C语言不同的的是

  • 条件表达式的值必须是布尔类型(Go语言中没有非零即真的概念)
  • 条件表达式前面可以添加初始化语句
  • 不需要编写圆括号
  • 左大括号必须和条件语句在同一行

第一种格式:条件表达式结果为 true,那么执行 if 后面 {} 中代码

if 初始化语句; 条件表达式{
    语句块;
}
package main
import "fmt"
func main() {
	// 如果后续需要用到age变量, 可以将变量放到if外面
	age := 18
	if age >= 18{
		fmt.Println("成年人")
	}
}
package main
import "fmt"
func main() {
	// 如果后续不需要用到age变量, 可以将变量放到条件表达式前面
	if age := 18; age >= 18{
		fmt.Println("成年人")
	}
}

第二种格式:

  • 条件表达式结果为 true,那么执行 if 后面 {} 中代码
  • 否则执行 else 后面 {} 中代码
if 初始化语句; 条件表达式{
    语句块;
}else{
    语句块;
}
package main
import "fmt"
func main() {
	if age := 18;age >= 18 {
		fmt.Println("成年人")
	}else{
		fmt.Println("未成年人")
	}
}

第三种格式:

  • if后面条件表达式结果为true,那么执行if后面{}中代码
  • 否则判断else if条件表达式是否为true,为true执行else if后面{}中代码
  • 否则依次判断后续else if条件表达式是否为true,哪个为true就执行哪个else if后面{}中代码
  • 都不满足则执行else后面{}中代码
if 初始化语句; 条件表达式{
    语句块;
}else if 条件表达式{
    语句块;
}
... ...
else{
    语句块;
}
package main
import "fmt"
func main() {
	if age := 18;age > 55{
		fmt.Println("老年人")
	}else if age >= 40{
		fmt.Println("中年人")
	}else if age >= 18{
		fmt.Println("成年人")
	}else{
		fmt.Println("未成年人")
	}
}

值得一提的是Go语言中没有C语言中的三目运算符,所以C语言中三目能干的在Go语言中都只能通过 if else 的形式来完成