短变量声明

短变量声明核心语法

  • 背景:上一节我们学习了常规声明(var name type = value)以及省略类型的声明(var name = value,编译器推断类型)。
  • 短声明(:=:如果已知初始值,Go 提供了最简洁的声明方式,使用 := 替代 var=
  • 语法变量名 := 值。不需要显式声明类型,值的类型将自动成为变量的类型。
  • 多变量声明:支持一次性短声明多个变量,如 length, width := 1.2, 2.4

代码对比:常规声明 vs 短声明

// 常规声明(显式类型)
var quantity int = 4
var length float64 = 2.3
var customername string = "foxdevelop.com"

// 省略类型的声明(推断)
var quantity = 4
var length = 2.3

// 短变量声明(最简洁,最常用)
quantity := 4       // 推断为 int
length := 2.3       // 推断为 float64
width := 1.2        // 推断为 float64
customername := "foxdevelop.com" // 推断为 string
isNumber := true    // 推断为 boolCode language: JavaScript (javascript)

完整示例输出

package main

import "fmt"

func main() {
    quantity := 23
    length := 2.3
    customername := "foxdevelop.com"
    isNumber := true
    
    fmt.Println(quantity, length, customername, isNumber)
    // 输出: 23 2.3 foxdevelop.com true
}Code language: CSS (css)

使用场景与注意事项

  • 常用场景:短声明非常方便简洁,在函数内部(如 main 函数)极其常用,是 Go 代码中最普遍的变量定义方式。
  • 作用域限制:= 主要用于函数内部。包级别(全局)变量声明必须使用 var(因为 := 需要赋值,而全局变量通常不依赖此语法)。
  • 类型绑定:短声明同样遵循 Go 的静态类型规则。声明后类型固定(如 quantityint),后续赋值时不能改变类型(不能赋字符串)。
  • 与零值结合:短声明必须赋值,因此不会触发上一节的“零值”机制(零值仅针对仅声明未赋值的情况,如 var x int)。

小结

声明方式语法示例类型处理适用场景
完整声明var a int = 10显式指定需明确类型或包级声明
推断声明var a = 10编译器推断包级或局部,稍显冗长
短声明a := 10编译器推断函数内最常用,极简
仅声明(零值)var a int显式指定需使用默认零值时

注意:虽然短声明简洁,但需记得它本质是“声明+赋值”,变量类型在声明瞬间由右侧值确定,后续受静态类型保护。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注