在 Go 语言中,变量用于存储和操作数据。变量是程序的基础,它允许程序在执行过程中存储信息并进行修改。Go 语言的变量声明简单且灵活,支持多种方式来定义变量。


📖 目录

  1. 声明变量
  2. 变量的类型
  3. 变量赋值
  4. 变量的作用域
  5. 多重赋值
  6. 常量与变量的区别
  7. 参考资料

1. 声明变量

在 Go 语言中,变量可以使用 var 关键字进行声明,变量的类型可以在声明时明确指定,或者由 Go 的类型推导机制自动推断。

1.1 显式声明

通过 var 关键字声明变量,并指定变量的类型和初始值。

示例:

package main

import "fmt"

func main() {
    var age int = 25
    var name string = "John"
    var isActive bool = true

    fmt.Println(age)     // 输出: 25
    fmt.Println(name)    // 输出: John
    fmt.Println(isActive) // 输出: true
}

1.2 简短声明(省略类型)

在函数内部,可以使用 := 来声明并初始化变量,Go 会自动推断变量的类型。简短声明只能在函数内部使用。

示例:

package main

import "fmt"

func main() {
    age := 25           // Go 自动推导为 int 类型
    name := "John"      // Go 自动推导为 string 类型
    isActive := true    // Go 自动推导为 bool 类型

    fmt.Println(age)     // 输出: 25
    fmt.Println(name)    // 输出: John
    fmt.Println(isActive) // 输出: true
}


2. 变量的类型

在 Go 中,每个变量都有一个类型,它决定了变量可以存储的数据种类。类型的声明可以在变量声明时进行,或者通过简短声明推导得出。

2.1 常见的基本数据类型

  • 整型(如 intint8int16int32int64 等)
  • 浮点型(如 float32float64
  • 布尔型bool
  • 字符型rune
  • 字符串string

2.2 数组类型

var arr [3]int = [3]int{1, 2, 3}

2.3 切片类型

var slice []int = []int{1, 2, 3}


3. 变量赋值

Go 支持直接给变量赋值,可以通过显式赋值或简短赋值来实现。

3.1 显式赋值

通过变量名赋予新值。

示例:

package main

import "fmt"

func main() {
    var age int = 25
    age = 30  // 给变量 age 赋新值

    fmt.Println(age) // 输出: 30
}

3.2 简短赋值

在函数内部使用 := 语法来进行赋值操作,Go 会根据右侧表达式的类型推导变量的类型。

示例:

package main

import "fmt"

func main() {
    age := 25
    age = 30  // 简短赋值语法

    fmt.Println(age) // 输出: 30
}


4. 变量的作用域

Go 语言中的变量有两种作用域:局部变量全局变量

  • 局部变量:在函数内部声明的变量,它的作用范围仅限于函数内部。
  • 全局变量:在函数外部声明的变量,整个包内都可以访问。

4.1 局部变量

package main

import "fmt"

func main() {
    var localVar int = 10  // 局部变量
    fmt.Println(localVar)   // 输出: 10
}

4.2 全局变量

package main

import "fmt"

var globalVar int = 100  // 全局变量

func main() {
    fmt.Println(globalVar)  // 输出: 100
}


5. 多重赋值

Go 语言允许在一行代码中对多个变量进行赋值,称为多重赋值。这在需要交换变量值时非常有用。

5.1 交换变量的值

package main

import "fmt"

func main() {
    a, b := 10, 20
    a, b = b, a  // 交换 a 和 b 的值

    fmt.Println(a) // 输出: 20
    fmt.Println(b) // 输出: 10
}


6. 常量与变量的区别

常量和变量在 Go 中的主要区别如下:

  • 常量:常量一旦赋值后不能更改,它的值在编译时就已确定。使用 const 关键字声明。
  • 变量:变量的值可以在程序运行时修改,使用 var:= 进行声明。

示例:

package main

import "fmt"

const Pi = 3.14159  // 常量

func main() {
    var radius float64 = 5
    area := Pi * radius * radius  // 使用常量计算面积

    fmt.Println(area) // 输出: 78.53975
}


7. 参考资料


Go 语言的变量系统非常灵活,可以帮助程序员轻松管理数据。通过理解变量的声明、赋值及其作用域,你能够编写更加简洁且高效的程序。