logo小熊博客
首页 代码速查表 fk标记语言示例 登录
目录
创建数组、切片、Map类型数据

初始化切片

// 声明一个空切片,未初始化任何元素
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)

类型

值类型

引用类型

引用类型

大小

固定大小(不可改变)

动态大小(可以增删元素)

动态大小(可以扩展)

访问方式

按索引访问

按键访问

按索引访问(切片本质上是对数组的引用)

存储方式

顺序存储,元素顺序固定

无序存储

顺序存储,元素顺序不固定

性能

适合小型固定数据集合,访问速度较快

插入、删除、查找非常高效

动态扩展,适合变化大小的数据集合

键值对

不支持键值对

每个元素由键和值组成

不支持键值对

使用场景

用于知道数据量固定、结构简单的情况

用于需要快速查找、键值映射或动态增删数据的情况

用于大小不固定,且需要灵活扩展或裁剪数据的情况

输出格式

[10 20 30]

map[apple:5 banana:3]

[1 2 3 4 5]

上一篇:ubuntu开放防火墙端口
下一篇:前端验证码
请我喝奶茶!
赞赏码
手机扫码访问
手机访问