Go语言变量与常量 -《Go语言实战指南》

在Go语言中,变量与常量是构建程序最基本的组成部分。本章将带你掌握变量和常量的声明方式、使用方法以及注意事项,打牢语言基础。


一、变量(Variable)

1.1 变量声明

Go语言支持多种变量声明方式:

方式一:标准声明
var a int
a = 10
方式二:同时赋初值
var b int = 20
方式三:类型推导(推荐)
var c = 30  // Go自动推导为int类型
方式四:短变量声明(只能在函数内部)
d := 40  // 自动推导类型

❗ := 是声明+赋值,不能重复声明已有变量。

1.2 多变量声明
var x, y, z int = 1, 2, 3

也可以混合类型:

var (
    name string = "Go"
    age  int    = 14
    flag bool   = true
)
1.3 零值(默认值)

Go会自动为未初始化的变量赋“零值”:

类型 零值
数字型 0
布尔型 false
字符串型 ""
指针/引用 nil

二、常量(Constant)

常量在声明时必须赋值,且值不能在运行时改变。

2.1 基本声明方式
const Pi = 3.14
const Name string = "GoLang"
2.2 多常量声明
const (
    A = 1
    B = "hello"
    C = true
)
2.3 枚举常量与 iota

iota 是Go的常量计数器,在每个 const 块中从0开始递增:

const (
    Red = iota  // 0
    Green       // 1
    Blue        // 2
)

也可以做位运算:

const (
    Read  = 1 << iota  // 1 << 0 = 1
    Write              // 1 << 1 = 2
    Execute            // 1 << 2 = 4
)

三、变量与常量的区别

项目 变量 常量
是否可变
必须赋值 否(有零值)
使用位置 全局/局部 全局/局部
类型推导 支持 支持
典型用途 临时状态数据 配置/控制标识符

四、注意事项

  • • := 不能用于全局变量声明,只能在函数内部使用;
  • • 常量不能使用函数返回值初始化;
  • • 不使用的变量会导致编译错误(Go强调代码整洁);
  • • 常量间可进行类型转换和运算,但不能赋给变量再变更。

五、实践示例

package main

import "fmt"

const (
    Monday = iota + 1
    Tuesday
    Wednesday
)

func main() {
    var name = "Go"
    age := 15
    const version = "1.21"

    fmt.Println("Language:", name)
    fmt.Println("Age:", age)
    fmt.Println("Version:", version)
    fmt.Println("Weekdays:", Monday, Tuesday, Wednesday)
}

输出:

Language: Go
Age: 15
Version: 1.21
Weekdays: 1 2 3

六、小结

  • • 变量是可变的数据容器,支持显式声明和类型推导;
  • • 常量用于存放不可变值,支持 iota 实现自增枚举;
  • • := 是Go特有的语法糖,但仅限于函数内部使用;
  • • 常量和变量一样支持批量声明,代码更整洁;

你可能感兴趣的:(golang,后端,go1.19)