Go语言切片

切片是一种动态数组,它可以根据需要增长或缩小,它在声明时只需要指定元素的类型。

例如,你可以创建一个字符串切片,并给它赋值:

var names = []string {"Alice", "Bob", "Charlie"}

或者你可以使用 make 函数来创建一个指定长度和容量的整型切片:

var numbers = make([]int, 5, 10)


切片是一个结构体,它包含了一个指向底层数组的指针、切片的长度和容量。

例如,你可以使用 len 和 cap 函数来获取切片的长度和容量:

fmt.Println(len(names)) // 3 fmt.Println(cap(numbers)) // 10


切片可以通过数组或者字面量来创建,也可以通过内置函数 make 来创建。

例如,你可以从一个数组中创建一个切片:

var array = [8]int {10, 20, 30, 40, 50, 60, 70, 80}

var slice = array[4:7] // [50, 60, 70]

或者你可以直接使用字面量来创建一个切片:

var slice = []int {10, 20, 30}


切片可以通过索引或者切片表达式来访问或修改其中的元素。

例如,你可以使用索引来获取或设置切片中的某个元素:

fmt.Println(slice[0]) // 10

slice[0] = 100 // [100, 20, 30]

或者你可以使用切片表达式来获取或设置切片中的一部分元素:

fmt.Println(slice[1:3]) // [20, 30]

slice[1:3] = []int {200, 300} // [100, 200 ,300]


切片可以通过内置函数 append 和 copy 来增加或复制元素。

例如,你可以使用 append 函数来向切片中追加新的元素:

s := []int {1 ,2 ,3}

s = append(s ,4 ,5) // [1 ,2 ,3 ,4 ,5]

或者你可以使用 copy 函数来复制另一个切片中的元素:

t := []int {6 ,7 ,8}

copy(s ,t) // s is now [6 ,7 ,8 ,4 ,5]


切片在赋值或者作为函数参数传递时不会发生完整的拷贝,而是共享底层数组。

例如,如果你将一个切片赋值给另一个变量,则两个变量都会指向同一个底层数组:

s := []int {1 ,2 ,3}

t := s

t[0] = -1

fmt.Println(s) // [-1 ,2 ,3]

fmt.Println(t) // [-1 ,2 ,3]

 

或者如果你将一个切片作为函数参数传递,则函数内部对该参数所做的修改也会影响到原始的切片:

"func modify(s []int) { s[0] *= -1 }

s := []int {10 ,-20}

modify(s)

fmt.Println(s) // [-10 ,-20]"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值