专业编程基础技术教程

网站首页 > 基础教程 正文

Go语言-变量

ccvgpt 2025-03-12 12:36:05 基础教程 3 ℃

Go 语言变量(Variable)

在Go语言中,变量是存储数据的基本单元,必须先声明再使用。Go语言提供了多种变量声明和初始化方式。


1. 变量的声明方式

(1) 使用var关键字

标准变量声明格式:

Go语言-变量

var 变量名 变量类型

示例:

var a int    // 声明一个 int 类型变量,默认值为 0
var b string // 声明一个字符串变量,默认值为 ""
var c bool   // 声明一个布尔变量,默认值为 false

(2) 声明并初始化

可以在 var 语句中直接赋值:

var d int = 10
var e string = "hello"
var f bool = true

注意: 变量的类型可以由编译器自动推断:

var g = 3.14  // 自动推断为 float64
var h = "Go"  // 自动推断为 string

(3) 批量变量声明

可以使用 var 关键字一次声明多个变量:

var (
    x int    = 100
    y string = "golang"
    z bool   = false
)

2. 简短变量声明(:=)

在函数内部,Go 提供了 := 语法,可以自动推断变量类型并初始化:

i := 42       // 自动推断 int
j := "hello"  // 自动推断 string
k := 3.14     // 自动推断 float64

注意: := 只能用于函数内部,不能用于包级别的变量声明。


3. 变量的默认值

Go 语言的变量在未初始化时,会有零值(Zero Value)

  • 整型(int, float) → 0
  • 字符串(string) → ""(空字符串)
  • 布尔型(bool) → false
  • 指针(pointer) → nil
  • 切片(slice)、映射(map)、通道(chan) → nil

示例:

var a int
var b string
var c bool
var d float64
fmt.Println(a, b, c, d)  // 输出:0 "" false 0

4. 变量的作用域

(1) 局部变量

局部变量在函数内部声明,仅在函数内可用:

func test() {
    localVar := "I am local"
    fmt.Println(localVar)
}
// localVar 在 test() 外部不可访问

(2) 全局变量

函数外部声明的变量可在整个包(package)中使用:

var globalVar = "I am global"

func test() {
    fmt.Println(globalVar)  // 可以访问
}

(3) 变量的可见性

  • 小写字母开头的变量包作用域(只能在同一个包内访问)
  • 大写字母开头的变量可导出(Exported),可以被其他包访问

示例:

package main

import "fmt"

var globalVar = "包内可访问" // 小写,包作用域
var GlobalVar = "所有包可访问" // 大写,跨包可访问

func main() {
    fmt.Println(globalVar)
    fmt.Println(GlobalVar)
}

5. 变量的特殊用法

(1) 匿名变量_

Go 允许使用 _(匿名变量)来忽略不需要的变量

func getValues() (int, string) {
    return 100, "hello"
}

func main() {
    x, _ := getValues() // 只获取第一个返回值,忽略第二个
    fmt.Println(x)      // 输出:100
}

(2) 交换变量的值

Go 语言可以直接交换两个变量的值,不需要临时变量:

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

(3) 多变量同时赋值

x, y, z := 1, 2, "hello"
fmt.Println(x, y, z)  // 输出:1 2 hello

6. 变量与指针

Go 语言支持指针变量,可以存储变量的内存地址:

var a int = 42
var ptr *int = &a // `&` 获取变量的地址
fmt.Println(ptr)  // 输出:变量 a 的内存地址
fmt.Println(*ptr) // 输出:42(通过指针访问值)

修改指针指向的值:

*ptr = 100
fmt.Println(a) // 变量 a 的值变为 100

总结

方式

语法

适用场景

var 关键字

var a int

适用于全局或显式指定类型的变量

var 关键字 + 初始化

var a = 100

适用于自动推断类型的情况

简短声明 :=

a := 100

仅能在函数内部使用,推荐用于局部变量

批量声明

var (a int; b string)

适用于多个变量一起声明

匿名变量 _

_, b := getValues()

忽略不需要的返回值

指针

var p *int = &a

访问变量地址或修改变量值

Tags:

最近发表
标签列表