Go语言if语句不加括号、必须花括号、支持初始化语句;条件前可声明临时变量,作用域限于if块;else if连续书写,无fallthrough;常用于err检查,确保资源安全。

Go语言的if语句简洁直接,不加括号、必须有花括号、支持初始化语句——这是它和C/Java最明显的区别。
基本语法结构
Go中if语句的标准写法是:
- 条件表达式不加小括号
() - 左花括号
{必须和if在同一行,不能换行 - 支持在条件前加一条**初始化语句**,用分号隔开
示例:
if x := getValue(); x > 10 {
fmt.Println("x 大于 10")
}
这里x := getValue()只在if作用域内有效,很适合做临时变量判断。
立即学习“go语言免费学习笔记(深入)”;
if-else 和多分支处理
标准的else if写法如下(注意else if之间没有分号或换行):
GNU makefile中文手册 pdf,文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。同时重点讨论如何为一个工程编写Makefile。阅读本书之前,读者应该对GNU的工具链和Linux的一些常用编程工具有一定的了解。诸如:gcc、as、ar、ld、yacc等本文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。重点讨论如何使用make来管理软件工程、以及如何为工程编写正确的Makefile。 本手册不是一个纯粹的语言翻译版本,其中对GNU make的一些语法
if score >= 90 {
grade = "A"
} else if score >= 80 {
grade = "B"
} else if score >= 70 {
grade = "C"
} else {
grade = "F"
}
Go不支持switch那样的“fallthrough”,每个分支互斥;也不允许省略花括号,哪怕只有一行代码。
配合err检查的常见写法
Go里函数常返回(value, error),所以if经常这样用:
if file, err := os.Open("config.txt"); err != nil {
log.Fatal(err)
} else {
defer file.Close()
// 处理 file
}
这种写法既做了错误检查,又把file的作用域限制在if-else块内,避免后续误用未初始化的变量。
注意事项和易错点
几个新手容易踩的坑:
-
不能省略花括号:即使只有一行,也必须写
{},否则编译报错 -
初始化语句后是分号,不是逗号:
if a := 1; a ✅,if a := 1, a ❌ -
初始化语句定义的变量,在整个
if-else链中都不可见(只在当前if或else if块内)
基本上就这些。写熟了会觉得非常干净利落,逻辑一目了然。









