4.1 if

本篇学习 Go if 语句的基础写法、初始化语句写法与区间判断思路,并能根据输入输出对应结果。

字数 1386 字

if 语句

概念说明

if 用于条件判断,根据布尔表达式结果执行不同代码分支。
它是 Go 里最基础、最常用的流程控制语句之一。
在“区间判断”“输入校验”“状态分流”这类场景里会频繁使用。

语法/规则

  1. Go 的 if 条件不需要圆括号,直接写布尔表达式即可。
  2. 分支代码必须写在 {} 中,不能省略大括号。
  3. 多分支通常写成 if -> else if -> else,满足第一个条件后就不会继续判断后续分支。
  4. 也可以写多个并列 if,但要确保条件互斥,避免一次命中多个分支。
  5. 处理非法输入时,常用“卫语句(提前返回)”让主流程更清晰。
  6. if 支持“初始化语句 + 条件判断”写法:if 初始化语句; 条件 {}
  7. 在初始化语句里声明的变量,只在当前 if/else 代码块内有效。

语法模板

1
2
3
4
5
6
7
if 条件1 {
	// 分支1
} else if 条件2 {
	// 分支2
} else {
	// 兜底分支
}
1
2
3
4
5
if 初始化语句; 条件 {
	// 条件成立
} else {
	// 条件不成立
}

带初始化语句的 if 示例(map 取值)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
package main

import "fmt"

func main() {
	ages := map[string]int{
		"阿斌": 21,
		"小王": 18,
	}

	name := "阿斌"
	if age, ok := ages[name]; ok {
		fmt.Printf("%s 的年龄是 %d\n", name, age)
	} else {
		fmt.Printf("没有找到 %s 的年龄信息\n", name)
	}
}

输出结果(name = 阿斌):

1
阿斌 的年龄是 21

区间判断示例(卫语句写法)

下面以年龄区间为例:

  • age <= 0:未出生
  • 1 ~ 18:未成年
  • 19 ~ 35:青年
  • > 35:中年
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main

import "fmt"

func main() {
	fmt.Println("请输入你的年龄:")
	var age int
	fmt.Scan(&age)

	if age <= 0 {
		fmt.Println("未出生")
		return
	}
	if age <= 18 {
		fmt.Println("未成年")
		return
	}
	if age <= 35 {
		fmt.Println("青年")
		return
	}
	fmt.Println("中年")
}

输出结果(输入 12):

1
2
3
请输入你的年龄:
12
未成年

区间判断示例(嵌套写法)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main

import "fmt"

func main() {
	fmt.Println("请输入你的年龄:")
	var age int
	fmt.Scan(&age)

	if age <= 18 {
		if age <= 0 {
			fmt.Println("未出生")
		} else {
			fmt.Println("未成年")
		}
	} else {
		if age <= 35 {
			fmt.Println("青年")
		} else {
			fmt.Println("中年")
		}
	}
}

输出结果(输入 30):

1
2
3
请输入你的年龄:
30
青年

区间判断示例(多条件并列写法)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

import "fmt"

func main() {
	fmt.Println("请输入你的年龄:")
	var age int
	fmt.Scan(&age)

	if age <= 0 {
		fmt.Println("未出生")
	}
	if age > 0 && age <= 18 {
		fmt.Println("未成年")
	}
	if age > 18 && age <= 35 {
		fmt.Println("青年")
	}
	if age > 35 {
		fmt.Println("中年")
	}
}

输出结果(输入 40):

1
2
3
请输入你的年龄:
40
中年

常见错误

  1. 把比较写成赋值(如 if age = 18),会导致编译报错。
  2. 写多个并列 if 时条件没有互斥,导致一次输出多个结果。
  3. 边界条件写错(如 1835)导致分类错误。
  4. 漏掉非法输入处理(如 age <= 0)导致逻辑不完整。
  5. if 初始化语句; 条件 中声明的变量拿到块外使用,导致“未定义”编译错误。
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
载入天数...载入时分秒...
发表了 0 篇文章 · 发表了 46 篇笔记 · 总计 2 万 5 千字(其中笔记 25104 字)