Go 变量声明与初始化|新手必背核心指南

2026-04-03 10 0

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/channelnil

四、变量命名规范(行业标准)

  1. 1. 仅支持:字母、数字、下划线
  2. 2. 不能以数字开头
  3. 3. 区分大小写
  4. 4. 禁止使用 Go 关键字(var/const/func 等)
  5. 5. 推荐:小驼峰命名(userName、maxCount)

五、变量作用域(生命周期)

  1. 1. 全局作用域:函数外声明,整个包可访问
  2. 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. 1. := 不能在函数外使用,全局只能用 var
  2. 2. 常量一旦定义不可修改,否则编译报错
  3. 3. 声明未使用的变量,Go 会直接编译失败
  4. 4. 短变量声明可声明新变量+复用旧变量,但必须至少一个新变量

总结

✅ 掌握 var / := / const 三种声明
✅ 理解零值自动填充机制
✅ 牢记命名规范+作用域规则
✅ 全套 demo 统一可跑,零语法错误

搞定变量基础,Go 学习直接快人一步🚀

相关文章

🧮 Go 运算符与表达式完全攻略|新手必学
📘 Go 基本数据类型全解|新手一次吃透!
Go 跨平台交叉编译|一行命令打包全平台!
🔥Go vet 代码体检神器|新手也能秒懂的静态检查指南
✨ Go 代码颜值天花板!gofmt 格式化保姆级教程
🚀Go 命令行工具全解|新手必背常用命令!

发布评论