← Hello World | 数据类型 →

变量与常量 - Go 基础语法

变量和常量是程序的基本组成单元。Go 提供了多种声明变量的方式,以及常量和 iota 枚举,掌握这些是编写 Go 代码的基础。

变量声明

📝 四种声明方式

package main

import "fmt"

func main() {
    // 方式 1: var 关键字
    var name string = "Go"
    
    // 方式 2: 类型推断
    var version = "1.26"
    
    // 方式 3: 短变量声明 (推荐)
    // := 自动推断类型
    // 只能在函数内使用
    // 至少有一个新变量
    age := 15
    
    // 方式 4: 零值初始化
    var count int  // 0
    var active bool // false
    
    fmt.Printf("%s %s, age %d\n", name, version, age)
}

// 批量声明
var (
    host = "localhost"
    port = 8080
)

// 多变量赋值
func swap(a, b int) (int, int) {
    return b, a
}

💡 变量要点

  • 短变量声明: 函数内优先使用 :=
  • 类型推断: 编译器自动推断类型
  • 零值: 未初始化变量有默认零值
  • 作用域: := 声明的变量作用域最小化

常量

📝 常量定义

package main

import "fmt"

// 常量定义
const Pi = 3.14159
const MaxUsers = 1000

// 批量定义
const (
    StatusOK       = 200
    StatusNotFound = 404
    StatusError    = 500
)

// 常量不能修改
// MaxUsers = 2000  // ❌ 编译错误

func main() {
    fmt.Printf("Pi: %f\n", Pi)
    fmt.Printf("Max: %d\n", MaxUsers)
}

iota 枚举

📝 iota 自增常量

package main

import "fmt"

func main() {
    // iota: 从 0 开始自增
    const (
        Sunday    = iota // 0
        Monday         // 1
        Tuesday        // 2
        Wednesday      // 3
        Thursday       // 4
        Friday         // 5
        Saturday       // 6
    )
    
    // iota 表达式
    const (
        _  = iota // 忽略 0
        KB = 1 << (10 * iota) // 1024
        MB = 1 << (10 * iota) // 1048576
        GB = 1 << (10 * iota) // 1073741824
    )
    
    // 多行同一值
    const (
        A = iota // 0
        B        // 1
        C = iota // 2 (重置)
        D        // 3
    )
    
    fmt.Println(Monday, KB, MB, GB)
}

📖 延伸阅读