此页存在 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)特点:
- 只有两个值:
truefalse
- 常用于条件判断
字符类型
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 |