Skip to content

变量

Updated View as Markdown

此页存在 AI 生成内容。

声明变量

首先需要知道如何声明变量。

  • 声明变量:
var [变量名] [变量类型]
  • 声明变量并赋值:
var [变量名] [变量类型] = [值]
  • 此外,函数的返回值也能作为值 例如前面的 quote 代码中
fmt.Println(quote.Go())

quote.Go() 即作为返回值给 Println

Go 中的变量类型

Go 的变量类型大致可以分为以下几类:基础类型复合类型引用类型接口类型函数类型通道类型


基础类型(Basic Types)

基础类型是 Go 中最常用的数据类型,用于存储简单数据。

整数类型

用于存储整数。

类型 位数
int8 8 位
int16 16 位
int32 32 位
int64 64 位
int 平台相关(32/64 位)
var age int = 18
var score int64 = 100

fmt.Println(age)
fmt.Println(score)

特点:

  • 存储整数
  • 支持正数、负数、0
  • int 最常使用

无符号整数 uint

只能存储非负整数。

var count uint = 100
var id uint64 = 99999

特点:

  • 不允许负数
  • 存储范围比同位数整数更大

浮点类型

用于存储小数。

var price float32 = 9.99
var salary float64 = 12345.6789

fmt.Println(price)
fmt.Println(salary)

特点:

  • float32 精度较低
  • float64 为默认推荐类型

布尔类型

用于表示真或假。

var isLogin bool = true
var isAdmin bool = false

fmt.Println(isLogin)

特点:

  • 只有两个值:
    • true
    • false
  • 常用于条件判断

字符类型

Go 使用 rune 表示 Unicode 字符。

var ch rune = ''

fmt.Println(ch)
fmt.Printf("%c\n", ch)

特点:

  • 本质是 int32
  • 支持中文、英文及各种 Unicode 字符

字符串类型

用于存储文本内容。

var name string = "Golang"

fmt.Println(name)

特点:

  • 使用双引号包裹
  • 字符串不可修改(Immutable)

复合类型(Composite Types)

复合类型由多个数据组合而成。

数组(Array)

固定长度的数据集合。

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

fmt.Println(nums)

特点:

  • 长度固定
  • 属于值类型
  • 长度也是类型的一部分

切片(Slice)

动态长度数组。

nums := []int{1, 2, 3}

nums = append(nums, 4)

fmt.Println(nums)

特点:

  • 长度可变
  • 底层基于数组实现
  • Go 开发中使用非常频繁

结构体(Struct)

用于封装多个字段。

type User struct {
    Name string
    Age  int
}

user := User{
    Name: "Tom",
    Age:  20,
}

fmt.Println(user)

特点:

  • 类似其他语言中的对象
  • 支持方法绑定
  • Go 面向对象的核心之一

引用类型(Reference Types)

引用类型存储的是数据地址。

Map

键值对集合。

user := map[string]int{
    "Tom": 20,
    "Jack": 18,
}

fmt.Println(user["Tom"])

特点:

  • 类似字典(Dictionary)
  • 查询效率高
  • Key 不允许重复

Pointer(指针)

存储变量地址。

var age int = 18

var p *int = &age

fmt.Println(*p)

特点:

  • 使用 & 获取地址
  • 使用 * 解引用
  • 可减少数据复制开销

接口类型(Interface)

接口定义行为规范。

type Speaker interface {
    Speak()
}

特点:

  • 不关心具体实现
  • 满足方法即可实现接口
  • Go 多态的核心机制

函数类型(Function)

函数本身也是一种类型。

var add func(int, int) int

add = func(a, b int) int {
    return a + b
}

fmt.Println(add(1, 2))

特点:

  • 函数可以赋值给变量
  • 可以作为参数传递
  • 支持闭包

通道类型(Channel)

用于 Goroutine 之间通信。

ch := make(chan int)

go func() {
    ch <- 100
}()

value := <-ch

fmt.Println(value)

特点:

  • Go 并发编程核心
  • 天然支持协程通信
  • 避免共享内存带来的复杂问题

类型分类总结

分类 常见类型
基础类型 int、float64、bool、string、rune
复合类型 array、slice、struct
引用类型 map、pointer
接口类型 interface
函数类型 func
通道类型 chan
Navigation

Type to search…

↑↓ navigate↵ selectEsc close