此页存在 AI 生成内容。
在本页
在 GoLang,变量类型基本和 C++ 没什么特别突出的区分,这里简单讲解基础类型,写的时候多使用就自然而然的记住了。重点掌握:
int
float64
bool
string
slice
map
struct
声明变量
在 Go 中的局部函数中,声明了变量就一定要使用。注意全局变量和局部变量!
首先需要知道如何声明变量。
- 此外,函数的返回值也能作为值 例如前面的
quote 代码中
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)
特点:
无符号整数 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)
特点:
字符类型
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 |