Go 1.25.1 环境|全场景可跑|零语法错误
哈喽各位 Gopher 小伙伴~今天用最轻快、最清晰、最好记的方式,带你一次性吃透 Go 变量核心!
var / := / const 三种声明、零值、作用域、命名规范全覆盖,demo 统一可跑,复制直接用✨
一、变量基础概念
变量是存储数据的命名容器,Go 是静态强类型语言,变量必须先声明后使用,类型在编译期确定,安全又稳定。
二、3 种变量/常量声明方式(必考+必用)
1. var 标准声明(通用型)
适用场景:全局变量、先声明后赋值、明确指定类型
语法
// 完整声明
var 变量名 类型 = 初始值
// 声明不赋值(自动零值)
var 变量名 类型
// 批量声明
var (
变量名1 类型1
变量名2 类型2 = 值2
)2. := 短变量声明(简洁型)
适用场景:函数内部、快速声明初始化
核心规则
- • 仅能在函数内使用
- • 自动推导类型,无需写类型
- • 必须赋值,不能只声明
- • 支持多变量同时声明
3. const 常量声明(不可变)
适用场景:固定不变的值(配置、常量、枚举)
核心规则
- • 声明必须赋值
- • 运行时不可修改
- • 支持类型推导
三、零值机制(Go 独有特性)
变量声明未手动赋值时,编译器自动赋予默认零值,杜绝未初始化异常!
| 类型 | 默认零值 |
|---|---|
| 整型/浮点型 | 0 |
| 布尔型 | false |
| 字符串 | 空字符串"" |
| 指针/切片/map/channel | nil |
四、变量命名规范(行业标准)
- 1. 仅支持:字母、数字、下划线
- 2. 不能以数字开头
- 3. 区分大小写
- 4. 禁止使用 Go 关键字(var/const/func 等)
- 5. 推荐:小驼峰命名(userName、maxCount)
五、变量作用域(生命周期)
- 1. 全局作用域:函数外声明,整个包可访问
- 2. 局部作用域:函数/代码块内声明,仅当前区域可访问
六、三种声明方式对比表
| 声明方式 | 使用位置 | 类型指定 | 必须赋值 | 可修改 |
|---|---|---|---|---|
| var | 全局/局部 | 支持 | 否 | 是 |
| := | 仅局部 | 自动推导 | 是 | 是 |
| const | 全局/局部 | 可选 | 是 | 否 |
七、统一 Demo 代码(全知识点覆盖)
所有示例用同一套代码,本地直接运行无报错!
package main
import "fmt"
// 全局变量 + 常量(var / const)
const AppName = "Go学习工具" // 常量
var Version = "1.0.0" // 全局变量
func main() {
// 1. var 声明(局部)
var userId int
var userName string = "Gopher小白"
// 批量var声明
var (
age int = 20
score float64
isPass bool
)
// 2. := 短变量声明
classId := 101
teacher := "Go技术专家"
// 赋值操作
userId = 1001
score = 95.5
isPass = true
// 输出所有变量
fmt.Println("=== 变量声明与初始化 ===")
fmt.Println("项目名称:", AppName)
fmt.Println("版本号:", Version)
fmt.Println("用户ID:", userId)
fmt.Println("用户名:", userName)
fmt.Println("年龄:", age)
fmt.Println("分数:", score)
fmt.Println("是否通过:", isPass)
fmt.Println("班级ID:", classId)
fmt.Println("授课老师:", teacher)
}八、零值验证代码
package main
import "fmt"
func main() {
var num int
var price float64
var status bool
var content string
var data []int
fmt.Println("int 零值:", num)
fmt.Println("float64 零值:", price)
fmt.Println("bool 零值:", status)
fmt.Println("string 零值:", content)
fmt.Println("切片零值:", data)
}九、高频避坑指南
- 1. := 不能在函数外使用,全局只能用 var
- 2. 常量一旦定义不可修改,否则编译报错
- 3. 声明未使用的变量,Go 会直接编译失败
- 4. 短变量声明可声明新变量+复用旧变量,但必须至少一个新变量
总结
✅ 掌握 var / := / const 三种声明
✅ 理解零值自动填充机制
✅ 牢记命名规范+作用域规则
✅ 全套 demo 统一可跑,零语法错误
搞定变量基础,Go 学习直接快人一步🚀
MiaoAll