1749 字
约 5 分钟
15
9. Go语言条件语句
2026-09-25
无标签
  1. Go语言条件语句 秀才 2025年2月14日 大约 6 分钟 Go语言 Go语言 golang go基础语法 条件语句 流程控制 此页内容 1. if 语句 1.1 基本语法 1.2 if-else 语句 1.3 if-else if-else 语句 1.4 if 的特殊写法 2. switch 语句 2.1 基本用法 2.2 switch的特殊用法 2.3 switch注意事项 3. 实际应用示例 3.1 错误处理 3.2 类型判断 3.3 状态机 4. 使用技巧和注意事项 5. 小结 条件语句是编程语言中最基本也是最常用的语句之一,它让程序可以根据不同的条件执行不同的代码块。Go语言提供了灵活而强大的条件语句支持。 1. if 语句 1.1 基本语法 Go语言中的if语句不需要使用括号将条件包含起来,但是程序体必须使用大括号。基本语法如下:
if condition {
 // code to execute if condition is true
}

例如:

package main

import "fmt"

func main() {
 age := 18
 if age >= 18 {
 fmt.Println("你已经成年了")
 }
}

运行结果:

你已经成年了

1.2 if-else 语句 当条件不满足时,可以使用else执行另一段代码:

package main

import "fmt"

func main() {
 score := 85
 if score >= 90 {
 fmt.Println("优秀")
 } else {
 fmt.Println("继续努力")
 }
}

运行结果:

继续努力

1.3 if-else if-else 语句 当需要判断多个条件时,可以使用if-else if-else结构:

package main

import "fmt"

func main() {
 score := 85
 if score >= 90 {
 fmt.Println("优秀")
 } else if score >= 80 {
 fmt.Println("良好")
 } else if score >= 60 {
 fmt.Println("及格")
 } else {
 fmt.Println("不及格")
 }
}

运行结果:

良好

1.4 if 的特殊写法 Go语言支持在if条件判断之前执行一个简单的语句:

package main

import "fmt"

func main() {
 if num := 9; num < 10 {
 fmt.Println(num, "小于10")
 } else {
 fmt.Println(num, "大于等于10")
 }
 // 注意:num变量的作用域仅在if-else语句块内
}

运行结果:

9 小于10
  1. switch 语句 2.1 基本用法 switch语句是多条件判断的另一种选择,相比于if-else更加清晰和简洁。Go语言的switch比传统的C/C++语言更加灵活: 不需要写break语句,匹配到case后自动中断 可以使用任意类型作为条件值,不限于常量或整数 case语句可以使用表达式 基本语法示例:
package main

import "fmt"

func main() {
 day := 3
 switch day {
 case 1:
 fmt.Println("星期一")
 case 2:
 fmt.Println("星期二")
 case 3:
 fmt.Println("星期三")
 case 4:
 fmt.Println("星期四")
 case 5:
 fmt.Println("星期五")
 default: // 可选的默认分支,当所有case都不匹配时执行
 fmt.Println("周末")
 }
}

运行结果:

星期三

2.2 switch的特殊用法 一个case可以有多个值,多个值之间使用逗号分隔:

switch day {
case 1, 2, 3, 4, 5: // 可以匹配多个值,只需要满足其中一个即可
 fmt.Println("工作日")
case 6, 7:
 fmt.Println("周末")
}

省略switch后的表达式,这种形式更接近于if-else结构:

score := 85
switch { // 省略条件表达式,默认为true
case score >= 90:
 fmt.Println("优秀")
case score >= 80:
 fmt.Println("良好")
case score >= 60:
 fmt.Println("及格")
default:
 fmt.Println("不及格")
}

fallthrough关键字: Go语言中的switch默认带有break效果,但如果需要继续执行下一个case,可以使用fallthrough:

switch {
case score >= 60:
 fmt.Println("及格")
 fallthrough // 继续执行下一个case,不管下一个case的条件是否满足
case score >= 0:
 fmt.Println("分数有效")
}

运行结果:

及格
分数有效

注意:fallthrough必须是case中的最后一条语句,并且会强制执行下一个case的代码块,而不判断条件。 switch可以用于类型判断:

var x interface{} = 25.0

switch v := x.(type) {
case int:
 fmt.Printf("x是整数,值为%d\n", v)
case float64:
 fmt.Printf("x是浮点数,值为%.2f\n", v)
case string:
 fmt.Printf("x是字符串,值为%s\n", v)
default:
 fmt.Printf("x的类型未知\n")
}

运行结果:

x是浮点数,值为25.00

2.3 switch注意事项 case的值必须是唯一的,不能重复 每个case默认带有break,不用显式写出 case后的表达式必须与switch的表达式类型一致 使用fallthrough时要特别小心,确保逻辑正确 default分支可选,但建议添加以处理未考虑的情况 3. 实际应用示例 3.1 错误处理

if err := doSomething(); err != nil {
 // 处理错误
 fmt.Println("发生错误:", err)
 return
}

3.2 类型判断

var i interface{} = "Hello"

switch v := i.(type) {
case string:
 fmt.Printf("字符串: %s\n", v)
case int:
 fmt.Printf("整数: %d\n", v)
case bool:
 fmt.Printf("布尔值: %v\n", v)
default:
 fmt.Printf("未知类型\n")
}

3.3 状态机

type State int

const (
 Idle State = iota
 Running
 Paused
 Stopped
)

func handleState(state State) {
 switch state {
 case Idle:
 fmt.Println("系统空闲中")
 case Running:
 fmt.Println("系统运行中")
 case Paused:
 fmt.Println("系统已暂停")
 case Stopped:
 fmt.Println("系统已停止")
 }
}
  1. 使用技巧和注意事项 代码风格 if和else后的 { 必须和if或else在同一行 优先使用正向逻辑,避免多重否定 优先处理错误情况,让主逻辑更清晰 性能考虑 多条件判断时,将最可能满足的条件放在前面 对于多个条件的判断,考虑使用switch替代if-else链 常见陷阱 注意if语句中初始化变量的作用域 不要在switch的case中漏写break(Go自动break) 使用fallthrough时要特别小心,确保逻辑正确 5. 小结 条件语句是程序流程控制的基础,Go语言通过简洁的语法和一些特殊的设计,让条件语句的使用更加灵活和高效。掌握好条件语句的各种用法,对于编写清晰、可维护的代码至关重要。 记住:选择合适的条件语句形式,让代码逻辑更清晰,可读性更好。过于复杂的条件判断应考虑重构,可能需要重新设计数据结构或使用其他模式。 关注秀才公众号: IT杨秀才 ,领取精品学习资料 公众号后台回复: Go面试 ,领取Go面试题库PDF 公众号后台回复: Go学习 ,领取Go必看书籍 公众号后台回复: 大模型 ,领取大模型学习资料 公众号后台回复: 111 ,领取架构学习资料 公众号后台回复: 26届秋招 ,领取26届秋招企业汇总表

    🔥 配套实战项目,拆得开、跑得起、能写进简历 多 Agent 编排 + RAG 混合检索 · 31 篇深度教程 + 50+ 面试题 点击查看 DevSupport AI 实战项目 → 在 GitHub 上编辑此页 上次编辑于: 2026/6/24 23:41:22 贡献者: Percygu , Your Name , gupeng 上一页 8. Go语言Map 下一页 10. Go语言循环
9. Go语言条件语句
https://clxhxhhr.top/posts/3610/
作者
clxstart
发布于
2026-09-25
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。