searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

GO切片笔记

2024-08-26 09:48:26
0
0

Go语言中的切片(Slice)笔记

1. 切片的概念

在Go语言中,切片是一种动态数组,它可以改变大小并且提供了丰富的功能。切片不是基本的数据类型,而是一种引用类型。它包含三个部分:指向数组元素的指针、长度(len)和容量(cap)。长度表示切片中有多少个元素,而容量则表示切片底层数组可以容纳的最大元素数量。

2. 创建切片

切片可以通过几种方式创建:

  • 从数组创建切片:

    arr := [5]int{1, 2, 3, 4, 5}
    slice := arr[0:3] // 创建一个切片,包含arr的前三个元素
    
  • 使用内置函数make创建切片:

    slice := make([]int, 5) // 创建一个长度为5的切片,初始化为零值
    
  • 使用字面量语法创建切片:

    slice := []int{1, 2, 3} // 直接初始化切片
    

3. 切片的扩容

当切片的容量不足以存放更多元素时,可以使用append函数进行扩容。append会自动检查切片的容量,如果容量不足,它会创建一个新的底层数组,并将原有元素复制过去,然后添加新元素。

slice := []int{1, 2, 3}
slice = append(slice, 4) // 自动扩容并添加元素

4. 切片的遍历

可以使用for循环遍历切片:

slice := []int{1, 2, 3}
for i, v := range slice {
    fmt.Println("索引:", i, " 值:", v)
}

5. 切片的常见操作

  • 追加元素:

    slice = append(slice, element)
    
  • 复制切片:

    newSlice := make([]int, len(slice))
    copy(newSlice, slice)
    
  • 删除切片中的元素:

    slice = append(slice[:i], slice[i+1:]...)
    

6. 切片与数组的区别

  • 切片是动态的,数组是静态的
  • 切片包含指向数组的指针、长度和容量,而数组只有元素
  • 切片可以轻松地扩展和收缩,而数组的大小是固定的

结论

切片是Go语言中非常强大且灵活的数据结构,它简化了数组的使用,提供了动态数组的功能,是处理集合数据时的首选。理解和熟练掌握切片的使用,是每个Go程序员必备的技能之一。

0条评论
0 / 1000
荣****睿
7文章数
0粉丝数
荣****睿
7 文章 | 0 粉丝
荣****睿
7文章数
0粉丝数
荣****睿
7 文章 | 0 粉丝
原创

GO切片笔记

2024-08-26 09:48:26
0
0

Go语言中的切片(Slice)笔记

1. 切片的概念

在Go语言中,切片是一种动态数组,它可以改变大小并且提供了丰富的功能。切片不是基本的数据类型,而是一种引用类型。它包含三个部分:指向数组元素的指针、长度(len)和容量(cap)。长度表示切片中有多少个元素,而容量则表示切片底层数组可以容纳的最大元素数量。

2. 创建切片

切片可以通过几种方式创建:

  • 从数组创建切片:

    arr := [5]int{1, 2, 3, 4, 5}
    slice := arr[0:3] // 创建一个切片,包含arr的前三个元素
    
  • 使用内置函数make创建切片:

    slice := make([]int, 5) // 创建一个长度为5的切片,初始化为零值
    
  • 使用字面量语法创建切片:

    slice := []int{1, 2, 3} // 直接初始化切片
    

3. 切片的扩容

当切片的容量不足以存放更多元素时,可以使用append函数进行扩容。append会自动检查切片的容量,如果容量不足,它会创建一个新的底层数组,并将原有元素复制过去,然后添加新元素。

slice := []int{1, 2, 3}
slice = append(slice, 4) // 自动扩容并添加元素

4. 切片的遍历

可以使用for循环遍历切片:

slice := []int{1, 2, 3}
for i, v := range slice {
    fmt.Println("索引:", i, " 值:", v)
}

5. 切片的常见操作

  • 追加元素:

    slice = append(slice, element)
    
  • 复制切片:

    newSlice := make([]int, len(slice))
    copy(newSlice, slice)
    
  • 删除切片中的元素:

    slice = append(slice[:i], slice[i+1:]...)
    

6. 切片与数组的区别

  • 切片是动态的,数组是静态的
  • 切片包含指向数组的指针、长度和容量,而数组只有元素
  • 切片可以轻松地扩展和收缩,而数组的大小是固定的

结论

切片是Go语言中非常强大且灵活的数据结构,它简化了数组的使用,提供了动态数组的功能,是处理集合数据时的首选。理解和熟练掌握切片的使用,是每个Go程序员必备的技能之一。

文章来自个人专栏
GO笔记
6 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0