数组、切片、map
798字约3分钟
2025-02-03
数组
数组(Array)是一种非常常见的数据类型,几乎所有的计算机编程语言中都会用到它
- 数组里的元素必须全部为同一类型,要嘛全部是字符串,要嘛全部是整数
- 声明数组时,必须指定其长度或者大小
package main
import "fmt"
func main() {
// 定义一个整数数组
intArray := [5]int{1, 2, 3, 4, 5}
// 打印整数数组
fmt.Println("整数数组:", intArray)
// 遍历整数数组并打印每个元素
fmt.Println("遍历整数数组:")
for i, num := range intArray {
fmt.Printf("索引: %d, 元素: %d\n", i, num)
}
// 获取数组的长度
length := len(intArray)
fmt.Println("数组的长度:", length)
// 访问数组中的元素
fmt.Println("访问数组中的元素:", intArray[2])
// 修改数组中的元素
intArray[2] = 6
fmt.Println("修改数组中的元素:", intArray[2])
}
切片
切片是Go语言中极为重要的一种数据类型,可以理解为动态长度的数组。
Go语言中,切片(slice)是一种动态数组的数据结构,可以随时添加或删除元素。所以切片是一个引用类型(因此更类似于 C/C++ 中的数组类型,或者 Python 中的 list 类型)。
package main
import "fmt"
func main() {
// 创建一个整数切片
intSlice := []int{1, 2, 3, 4, 5}
// 打印整数切片
fmt.Println("整数切片:", intSlice)
// 遍历整数切片并打印每个元素
fmt.Println("遍历整数切片:")
for i, num := range intSlice {
fmt.Printf("索引: %d, 元素: %d\n", i, num)
}
// 获取切片的长度
length := len(intSlice)
fmt.Println("切片的长度:", length)
// 访问切片中的元素
fmt.Println("访问切片中的元素:", intSlice[2])
// 修改切片中的元素
intSlice[2] = 6
fmt.Println("修改切片中的元素:", intSlice[2])
// 添加元素到切片末尾
intSlice = append(intSlice, 6)
fmt.Println("添加元素到切片末尾:", intSlice)
// 删除切片中的元素
intSlice = intSlice[:len(intSlice)-1]
fmt.Println("删除切片中的元素:", intSlice)
// 创建一个新的切片,复制 intSlice 中的元素
newSlice := make([]int, len(intSlice))
copy(newSlice, intSlice)
fmt.Println("创建一个新的切片,复制 intSlice 中的元素:", newSlice)
}
map
Go语言中的map(映射、字典)是一种内置的数据结构,它是一个无序的key-value对的集合
map的key必须是基本数据类型,value可以是任意类型
注意,map使用之前一定要初始化
package main
import "fmt"
func main() {
// 创建一个字符串到整数的map
stringToInt := make(map[string]int) // stringToInt := map[string]int{"one":1, "two":2, "three":3}
// 向map中添加键值对
stringToInt["one"] = 1
stringToInt["two"] = 2
stringToInt["three"] = 3
// 打印map
fmt.Println("map:", stringToInt)
// 访问map中的值
fmt.Println("访问map中的值:", stringToInt["one"])
// 查看MAP长度
fmt.Println(len(stringToInt))
// 修改map中的值
stringToInt["one"] = 11
fmt.Println("修改map中的值:", stringToInt["one"])
// 增加map中的键值
stringToInt["four"] = 4
fmt.Println(stringToInt)
// 删除map中的键值对
delete(stringToInt, "one")
fmt.Println("删除map中的键值对:", stringToInt)
// 判断map中是否存在某个键, 利用第二个返回值
_, prs := stringToInt["one"]
fmt.Println("prs:", prs)
// 判断map中不存在的键
k, v := stringToInt["five"]
fmt.Println(k, v)
}