【Golang学习之旅】Go 语言数据类型详解(string、slice、map等)
文章目录
- 前言
- 1. Go语言数据类型概览
- 2. Go语言基本数据类型
- 2.1 整型(int,uint,float)
- 2.2 布尔类型(bool)
- 2.3 字符串(string)
- 3. Go 语言复合数据类型
- 3.1 数组(Array)
- 3.2 切片(Slice)
- 3.3 映射(Map)
- 4. 结构体(Struct)
- 5. 指针(Pointer)
- 总结 & 进阶学习方向
前言
✅ 适合人群:Golang 新手 | 后端开发者 | 面试求职者
✅ 文章亮点:超详细解析 + 代码示例 + 实战应用
✅ 目标:掌握 Go 语言核心数据类型,助你写出高效、稳定的 Go 代码!
1. Go语言数据类型概览
Go语言是一种静态强类型
语言,所有变量在使用前都必须指定类型,类型一旦确定,就不能随意更改。Go语言的数据类型大致分为以下几类:
类别 | 数据类型 | 说明 |
---|---|---|
基本类型 | bool 、string 、int 、float | 常见的基本数据类型 |
复合类型 | array (数组)、slice (切片) | 存储多个元素的集合 |
映射类型 | map (哈希表) | 键值对存储结构 |
结构体 | struct | 自定义数据结构 |
接口类型 | interface{} | 可用于实现多态 |
指针类型 | *T | 存储变量地址 |
通道类型 | chan | 并发通信机制 |
🔹 为什么要了解 Go 语言数据类型?
✅ 代码更安全(静态类型检查,减少错误)
✅ 性能更优(高效的内存管理)
✅ 更易维护(强类型保证代码稳定性)
2. Go语言基本数据类型
2.1 整型(int,uint,float)
Go语言支持有符号整数
和无符号整数
:
var a int = 10 // 标准int类型(与cpu位数有关)
var b int8 = 127 // 8位整数(-127 ~ 127)
var c uint16 = 65535 // 16位无符号整数(0 ~ 65535)
var d int32 = 2147483647 // 32位整数
var e int64 = 9223372036854775807 // 64位整数
🔹 Go 语言的整数类型取值范围:
类别 | 大小 | 取值范围 |
---|---|---|
int8 | 8位 | -128 ~ 127 |
uint8 | 8位 | 0 ~ 255 |
int16 | 16位 | -32,768 ~ 32,767 |
uint16 | 16位 | 0 ~ 65,535 |
int32 | 32位 | -2,147,483,648 ~ 2,147,483,647 |
uint32 | 32 位 | 0 ~ 4,294,967,295 |
int64 | 64 位 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
uint64 | 64位 | 0 ~ 18,446,744,073,709,551,615 |
浮点数(float32、float64) |
var pi float32 = 3.1415926 // 32位浮点数
var e float64 = 2.718281828 // 64位浮点数(推荐)
2.2 布尔类型(bool)
var isGoFun bool = true
fmt.Println(isGoFun) // 输出: true
🔹 布尔值只有 true
和 false
,不能与 0
或 1
互换。
2.3 字符串(string)
Go 语言的 string
是 不可变 的 UTF-8 编码字符串,默认使用双引号""
定义。
var hello string = "Hello, Golang!"
fmt.Println(hello)
🔹 多行字符串(使用反引号 `)
var multiLine = `第一行
第二行
第三行`
fmt.Println(multiLine)
🔹 字符串拼接
s1 := "Hello"
s2 := "Go"
result := s1 + ", " + s2 + "!"
fmt.Println(result) // 输出: Hello, Go!
3. Go 语言复合数据类型
3.1 数组(Array)
Go 语言数组是 固定大小的,一旦定义后,不能扩展。
var arr [3]int = [3]int{1, 2, 3} // 方式1
arr2 := [...]int{4, 5, 6} // 方式2
fmt.Println(arr, arr2)
🔹 遍历数组
for i, v := range arr {
fmt.Printf("索引: %d, 值: %d\n", i, v)
}
3.2 切片(Slice)
🔹 切片是 Go 语言最常用的数据结构,类似动态数组,可变长度。
slice := []int{1, 2, 3}
slice = append(slice, 4, 5) // 添加元素
fmt.Println(slice) // [1 2 3 4 5]
🔹 切片截取
subSlice := slice[1:3] // 获取索引 1 到 3 之间的元素
fmt.Println(subSlice) // [2 3]
3.3 映射(Map)
🔹 Map 是 Go 语言中的哈希表(键值对存储)
person := map[string]int{"Alice": 25, "Bob": 30}
fmt.Println(person["Alice"]) // 输出 25
person["Charlie"] = 35 // 添加元素
delete(person, "Bob") // 删除元素
🔹 遍历 Map
for k, v := range person {
fmt.Printf("Key: %s, Value: %d\n", k, v)
}
4. 结构体(Struct)
🔹 Go 语言支持自定义数据类型(类似面向对象的类)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Alice", Age: 25}
fmt.Println(p.Name, p.Age) // Alice 25
}
5. 指针(Pointer)
🔹 Go 语言的指针用于存储变量的地址
var a int = 42
var p *int = &a // 指针 p 指向变量 a
fmt.Println(*p) // 通过指针解引用,输出 42
总结 & 进阶学习方向
📌 本篇文章介绍了 Go 语言的常见数据类型,包括 string、slice、map 等,帮助你掌握 Go 语言基础。
📌 进阶学习:Go 并发(Goroutine)、微服务(gRPC)、Web 开发(Gin 框架)
📌 学习资源:Go 官方文档