go Slice切片语法

go Slice 切片语法

切片是一种动态数组,比数组操作灵活,长度不是固定的,可以进行追加和删除。
len()cap() 返回结果可相同和不同。

声明切片§

 1//demo_7.go
 2package main
 3
 4import (
 5	"fmt"
 6)
 7
 8func main() {
 9	var sli_1 [] int      //nil 切片
10	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli_1),cap(sli_1),sli_1)
11
12	var sli_2 = [] int {} //空切片
13	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli_1),cap(sli_2),sli_2)
14
15	var sli_3 = [] int {1, 2, 3, 4, 5}
16	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli_3),cap(sli_3),sli_3)
17
18	sli_4 := [] int {1, 2, 3, 4, 5}
19	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli_4),cap(sli_4),sli_4)
20
21	var sli_5 [] int = make([] int, 5, 8)
22	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli_5),cap(sli_5),sli_5)
23
24	sli_6 := make([] int, 5, 9)
25	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli_6),cap(sli_6),sli_6)
26}
go

截取切片§

 1//demo_8.go
 2package main
 3
 4import (
 5	"fmt"
 6)
 7
 8func main() {
 9	sli := [] int {1, 2, 3, 4, 5, 6}
10	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli),cap(sli),sli)
11
12	fmt.Println("sli[1] ==", sli[1])
13	fmt.Println("sli[:] ==", sli[:])
14	fmt.Println("sli[1:] ==", sli[1:])
15	fmt.Println("sli[:4] ==", sli[:4])
16
17	fmt.Println("sli[0:3] ==", sli[0:3])
18	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli[0:3]),cap(sli[0:3]),sli[0:3])
19
20	fmt.Println("sli[0:3:4] ==", sli[0:3:4])
21	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli[0:3:4]),cap(sli[0:3:4]),sli[0:3:4])
22}
go

追加切片§

 1//demo_9.go
 2package main
 3
 4import (
 5	"fmt"
 6)
 7
 8func main() {
 9	sli := [] int {4, 5, 6}
10	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli),cap(sli),sli)
11
12	sli = append(sli, 7)
13	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli),cap(sli),sli)
14
15	sli = append(sli, 8)
16	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli),cap(sli),sli)
17
18	sli = append(sli, 9)
19	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli),cap(sli),sli)
20
21	sli = append(sli, 10)
22	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli),cap(sli),sli)
23}
go

删除切片§

 1//demo_10.go
 2package main
 3
 4import (
 5	"fmt"
 6)
 7
 8func main() {
 9	sli := [] int {1, 2, 3, 4, 5, 6, 7, 8}
10	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli),cap(sli),sli)
11
12	//删除尾部 2 个元素
13	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli[:len(sli)-2]),cap(sli[:len(sli)-2]),sli[:len(sli)-2])
14
15	//删除开头 2 个元素
16	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli[2:]),cap(sli[2:]),sli[2:])
17
18	//删除中间 2 个元素
19	sli = append(sli[:3], sli[3+2:]...)
20	fmt.Printf("len=%d cap=%d slice=%v\n",len(sli),cap(sli),sli)
21}
go
  • 全部
  • 简体中文
  • 最佳匹配
  • 最旧的
  • 最新的
  • 2021
  • 2022
  • 2023
  • 2024
  • 2025
  • jobcher
  • docker
  • github
  • gitlab
  • go
  • IOS 开发
  • k8s
  • Mac
  • stable diffusion
  • web 服务器
  • web3.0
  • work
  • 人工智能
  • 周报
  • 基础
  • 打赏
  • 数据库
  • 旅行
  • 日常
  • 日报
  • 测试
  • 监控
  • 福利
  • 美食
  • 问题库
  • docker入门系列
  • docker进阶系列
  • github
  • git入门系列
  • go系列
  • IOS 开发
  • k8s入门系列
  • k8s系列
  • Mac系列
  • mysql系列
  • oracle系列
  • stable diffusion
  • web3.0
  • web服务入门系列
  • 人工智能系列
  • 周报系列
  • 基础知识系列
  • 打赏
  • 旅行系列
  • 日常系列
  • 日报
  • 测试
  • 福利系列
  • 美食家常菜系列
  • 运维监控系列
  • 问题库系列
  • ansible
  • brew
  • ChatGPT
  • daliy
  • docker
  • DockerCompose
  • dockerfile
  • error
  • github
  • gitlab
  • golang
  • IOS 开发
  • IPFS
  • java
  • javascript
  • k3s
  • k8s
  • linux
  • logstash
  • Markdown
  • midjourney
  • minIO
  • mysql
  • nginx
  • nps
  • oracle
  • Planet
  • prometheus
  • pve
  • RocketMQ
  • rsync
  • skywalking
  • stable diffusion
  • TCP/IP
  • Terraform
  • web3.0
  • work
  • 内网穿透
  • 周报
  • 基础
  • 外快
  • 打赏
  • 扩容磁盘
  • 日常生活
  • 日报
  • 树莓派
  • 测试
  • 网心云
  • 美食
  • 自动化
  • 运维