程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

Go语言零到一:动态数组——切片(go语言的切片)

balukai 2025-07-14 14:50:25 文章精选 3 ℃

引言

切片是 Go 语言中一种非常灵活和强大的数据结构,它提供了动态数组的功能。与数组相比,切片可以轻松地改变其大小,并且提供了更多的内置操作。

1. 切片声明

  • 基本语法
    • 使用 [ ] 后跟类型来声明切片。
    • 示例:
var slice []int
  • 初始化切片
    • 可以使用 make 函数来初始化切片。
    • 示例:
slice := make([]int, 5) // 创建一个长度为 5 的切片
  • 省略长度
    • 如果在初始化时提供了长度,可以省略初始长度,编译器会推断长度。
    • 示例:
slice := make([]int, 5, 10) // 创建一个长度为 5,容量为 10 的切片

2. 访问切片元素

  • 使用索引
    • 切片元素可以通过索引访问,索引从 0 开始。
    • 示例:
fmt.Println(slice[0]) // 输出第一个元素
  • 越界检查
    • 访问超出切片范围的索引会导致运行时错误。
    • 示例:
fmt.Println(slice[5]) // 运行时错误:index out of range

3. 遍历切片

  • 使用 for 循环
    • 可以使用 for 循环遍历切片。
    • 示例:
for i := 0; i < len(slice); i++ { 
 fmt.Println(slice[i]) 
}
  • 使用 for-range
    • 更简洁的方式是使用 for-range 循环。
    • 示例:
for index, value := range slice { 
 fmt.Println(index, value) 
}

4. 切片操作

  • 追加元素
    • 使用 append 函数向切片末尾追加一个或多个元素。
    • 示例:
slice = append(slice, 10)
  • 复制切片
    • 使用 copy 函数复制一个切片。
    • 示例:
newSlice := make([]int, len(slice)) 
copy(newSlice, slice)
  • 切片切片
    • 使用切片操作符 [:] 来创建新的切片。
    • 示例:
    • subSlice := slice[1:3]
  • 切片容量
    • 切片有一个隐式的容量属性,表示它可以增长的最大长度。
    • 示例:
fmt.Println(cap(slice)) // 输出切片的容量

5. 编码

package main

import (
  "fmt"
)

func main() {
  // 声明并初始化切片
  slice := make([]int, 5, 10)
  for i := range slice {
    slice[i] = i + 1
  }

  // 访问切片元素
  fmt.Println(slice[0]) // 输出 1

  // 遍历切片
  for i := 0; i < len(slice); i++ {
    fmt.Println(slice[i])
  }

  // 使用 for-range 遍历
  for index, value := range slice {
    fmt.Println(index, value)
  }

  // 追加元素
  slice = append(slice, 6)

  // 复制切片
  newSlice := make([]int, len(slice))
  copy(newSlice, slice)

  // 切片切片
  subSlice := slice[1:3]

  // 显示容量
  fmt.Println(cap(slice))

  // 作为函数参数
  printSlice(subSlice)
}

func printSlice(s []int) {
  for _, v := range s {
    fmt.Println(v)
  }
}

Tags:

最近发表
标签列表