网站首页 > 文章精选 正文
引言
切片是 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)
}
}
猜你喜欢
- 2025-07-14 Go并发编程之WaitGroup(go语言 并发)
- 2025-07-14 golang企业微信告警(企业微信告警推送)
- 2025-07-14 2.8 Go语言中的for循环,break和continue
- 2025-07-14 Go语言Context包:最常用包之一的使用指南
- 2025-07-14 2025-06-26:转换数组。用go语言,给你一个整数数组 nums,它被视
- 2025-07-14 go sync.Pool简介(go system)
- 2025-07-14 2025-07-13:统计特殊子序列的数目。用go语言,给定一个只包含正
- 2025-07-14 Go语言数据库编程:GORM 的基本使用
- 2025-07-14 2025-06-28:长度可被 K 整除的子数组的最大元素和。用go语言,给
- 2025-07-14 Go语言零到一:初识变量(go语言示例)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)
- fmt.println (52)