引言
变量和常量是编程语言中最基本的概念之一。在 Go 语言中,变量用于存储数据,而常量则用于表示不可更改的值。本节将介绍如何在 Go 语言中声明和使用变量与常量。
1. 变量
- 声明变量:
- 使用 var 关键字声明变量。
- 示例:var age int = 30
- 等价于:var age int 然后 age = 30
- 简化声明:可以直接赋值来声明变量,省略 var 关键字。
- 示例:age := 30 (Go 会自动推断类型)
- 变量类型:
- 整型:int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr
- 浮点型:float32, float64
- 字符串:string
- 布尔型:bool
- 空接口:interface{}
- 复合类型:
- 数组:[5]int (固定长度数组)
- 切片:[]int (动态长度数组)
- 映射:map[string]int
- 结构体:struct { Name string; Age int }
- 核心类型:
- channel:chan T
- channel(管道)是Go中的一个核心类型,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)
- 初始化变量:
- 可以在声明时初始化变量。
- 示例:var name string = "Alice"
- 省略类型时,Go 会自动推断类型。
- 示例:name := "Alice"
- 零值:
- 如果变量未初始化,则会赋予零值。
- 示例:var age int (age 的值为 0)
- 示例:var name string (name 的值为空字符串 "")
- 多个变量声明:
- 可以在同一行声明多个变量。
- 示例:var name, age string = "Alice", "30"
- 短变量声明:
- 使用 := 运算符进行短变量声明。
- 示例:name, age := "Alice", 30
- 类型推断:
- 当使用 := 运算符时,Go 会根据初始化表达式的类型自动推断变量类型。
2. 常量
- 声明常量:
- 使用 const 关键字声明常量。
- 示例:const pi float64 = 3.14159
- 复合常量:
- 可以声明多个常量。
- 示例:const ( a, b = 1, 2 )
- 类型限制:
- 常量在声明时必须指定类型。
- 示例:const name string = "Alice"
- 常量表达式:
- 常量的值必须是编译时常量表达式。
- 示例:const oneThird = 1 / 3
- Unicode 字符:
- 常量可以是 Unicode 字符。
- 示例:const unicodeChar rune = '"a'
3. 示例代码
// https://go.dev/play/p/f1Lkt_qRfHQ
package main
import "fmt"
func main() {
// 变量声明和初始化
var name string = "Victor"
age := 30
fmt.Println("Name:", name)
fmt.Println("Age:", age)
// 多个变量声明
var (
firstName string = "John"
lastName string = "Doe"
)
fmt.Println("Full name:", firstName, lastName)
// 常量声明
const pi float64 = 3.14159
fmt.Println("Pi:", pi)
// 常量
const (
a, b = 1, 2
)
fmt.Println("a:", a, "b:", b)
}