初始化切片
// 声明一个空切片,未初始化任何元素
var slice1 []int
// 初始化一个切片,包含指定元素
slice2 := []int{1, 2, 3, 4, 5}
// 使用 `make` 函数创建一个切片,指定长度和容量
slice3 := make([]int, 5)          // 长度为 5,容量也是 5
slice4 := make([]int, 5, 10)      // 长度为 5,容量为 10
// 创建一个从数组的子部分生成的切片
arr := [5]int{1, 2, 3, 4, 5}
slice5 := arr[1:4]  // 切片从数组的索引 1 到 4(不包含索引 4)
fmt.Println(slice1)  // 输出: []
fmt.Println(slice2)  // 输出: [1 2 3 4 5]
fmt.Println(slice3)  // 输出: [0 0 0 0 0]
fmt.Println(slice4)  // 输出: [0 0 0 0 0]
fmt.Println(slice5)  // 输出: [2 3 4]
增加元素
// 创建并初始化一个切片
slice := []int{1, 2, 3}
// 使用 `append` 添加元素
slice = append(slice, 4)   // 在末尾添加一个元素
fmt.Println(slice)         // 输出: [1 2 3 4]
// 在指定位置插入元素
slice = append(slice[:2], append([]int{10}, slice[2:]...)...)
fmt.Println(slice)         // 输出: [1 2 10 3 4]
删除元素
// 创建并初始化一个切片
slice := []int{1, 2, 3, 4, 5}
// 删除索引为 2 的元素(值为 3)
slice = append(slice[:2], slice[3:]...)
fmt.Println(slice)  // 输出: [1 2 4 5]
移动元素
// 创建并初始化一个切片
slice := []int{1, 2, 3, 4, 5}
// 将索引 1 位置的元素(值为 2)移动到索引 3 的位置
element := slice[1]
slice = append(slice[:1], append([]int{element}, slice[2:]...)...)
fmt.Println(slice)  // 输出: [1 3 4 2 5]
初始化数组
// 初始化一个长度为 5 的整数数组,元素默认为 0
var arr1 [5]int
// 初始化并赋值一个数组
arr2 := [3]int{1, 2, 3}
// 使用 ... 来推断数组的长度
arr3 := [...]int{1, 2, 3, 4, 5}
// 初始化一个包含不同类型元素的数组
arr4 := [3]interface{}{1, "hello", 3.14}
fmt.Println(arr1) // 输出: [0 0 0 0 0]
fmt.Println(arr2) // 输出: [1 2 3]
fmt.Println(arr3) // 输出: [1 2 3 4 5]
fmt.Println(arr4) // 输出: [1 hello 3.14]
初始化Map
package main
import "fmt"
func main() {
    var user = make(map[string]string)
    user["name"] = "张三"
    user["age"] = "20"
    fmt.Println(user)
    var user2 = map[string]string{
        "name": "张三",
        "age":  "20",
    }
    fmt.Println(user2)
    //修改Map数据
    user["name"] = "李四"
    fmt.Println(user)
}
区别
| 特性 | 数组(Array) | 映射(Map) | 切片(Slice) | 
|---|---|---|---|
类型  | 值类型  | 引用类型  | 引用类型  | 
大小  | 固定大小(不可改变)  | 动态大小(可以增删元素)  | 动态大小(可以扩展)  | 
访问方式  | 按索引访问  | 按键访问  | 按索引访问(切片本质上是对数组的引用)  | 
存储方式  | 顺序存储,元素顺序固定  | 无序存储  | 顺序存储,元素顺序不固定  | 
性能  | 适合小型固定数据集合,访问速度较快  | 插入、删除、查找非常高效  | 动态扩展,适合变化大小的数据集合  | 
键值对  | 不支持键值对  | 每个元素由键和值组成  | 不支持键值对  | 
使用场景  | 用于知道数据量固定、结构简单的情况  | 用于需要快速查找、键值映射或动态增删数据的情况  | 用于大小不固定,且需要灵活扩展或裁剪数据的情况  | 
输出格式  |    |    |    | 




