Go语言变量详解:99%新手都会踩的坑,我一次性讲清!

🧩 一、什么是变量?

变量是程序在运行期间用于保存数据的容器。Go 语言是一种强类型语言,每个变量在使用前都必须明确声明其类型或让编译器自动推导类型。

📌 变量的特点:
  • 可读可写(相较于常量)

  • 类型固定(静态类型语言)

  • 作用域清晰(函数内外变量不可混用)


✳️ 二、变量声明方式详解

Go 中一共有 三种变量声明方式,每种适用于不同场景:

✅ 1️⃣ 使用 var 关键字(最通用)
var name string       // 声明未赋值,默认为 ""
var age int = 18      // 显式指定类型 + 初始化
var score = 90.5      // 自动推导为 float64

💬 适用场景

  • 全局变量

  • 函数外变量

  • 明确声明类型便于阅读


✅ 2️⃣ 简短声明 :=(只能函数内用)
nickname := "小明"
height := 1.75

💬 适用场景

  • 函数体内部快速声明变量

  • 不需要写类型,编译器自动推导

🧨 注意

  • 只能在函数内部使用

  • 必须是新变量(至少一个变量是新声明)


✅ 3️⃣ 批量声明
var (
  id int = 1001
  userName = "zhangsan"
  isLogin bool
)

💬 适用场景

  • 一次性声明多个变量,代码整洁

  • 通常用于结构初始化、全局变量区域


🛠️ 三、Go 变量类型与零值

📦 常见变量类型:
类型名示例值零值
int420
float643.140.0
string"hello"""
booltruefalse
*intnilnil
[]int[]nil

💬 零值定义

零值是变量在未显式赋值时的默认值,保证变量总能安全访问,不会出现“未初始化”错误。


📛 四、变量命名规则与可见性

  • ✅ 必须以字母或下划线开头

  • ✅ 区分大小写

  • ❌ 不可使用 Go 关键字(如 func, var, package

🧱 可见性规则:
  • 变量以小写字母开头:仅包内可见(私有)

  • 变量以大写字母开头:对包外可见(公有)

var Name = "对外可见"
var name = "只在本包内可见"

🎭 五、匿名变量 _ —— 忽略不需要的值

Go 的函数可以返回多个值,如果你不需要其中某个值,可以用 _ 占位:

func getData() (int, string) {
    return 1, "data"
}
​
a, _ := getData()  // 忽略第二个值

📌 _ 是一个只写不读的特殊变量,不会占用内存空间。


🔄 六、变量的作用域

变量只能在其作用域内有效

示例:
func example() {
  x := 10        // x 只在 example 内有效
  if x > 5 {
    y := 20      // y 只在 if 代码块内有效
  }
}

📌 小技巧:

  • 变量的生命周期 = 作用域的持续时间

  • Go 编译器会报错:声明未使用的变量


🧪 七、常见陷阱与注意点

⚠️ 问题🧠 原因✅ 建议
declared but not used声明了变量但没用声明后务必使用
no new variables on left side of :=使用了重复变量名确保至少有一个变量是新变量
:= 在函数外不能用只能函数内部使用全局变量请使用 var

🔄 八、Go 变量类型推导规则

编译器如何推导类型?
i := 10         // int
f := 3.14       // float64
b := true       // bool
s := "golang"   // string

📌 注意:默认浮点数是 float64,整数是 int


📝 九、小练习(可做成卡片图)

你能判断这些变量的类型吗?
x := 100
y := "hello"
z := true
t := 3.0 + 5

答案:intstringboolfloat64

Golang全栈开发完整课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值