golang

从数组到切片 Link to heading

数组通过切片操作可以生成切片,切片是引用数据类型,源数组改变,切片就会变。切片在内存中包含三个数据。开始地址、长度、容量;容量是切片开始位置到数组最后的长度

package main

import "fmt"

func main() {
	var a = [5]int{1, 2, 3, 4, 5}
  // 生成切片slice,slice全切
	var slice = a[:]
	fmt.Println(slice)
  // 切片slice也可以进行再切片,由于是引用数据,其实就是对源数据a进行切片
	var newSlice = slice[1:3]
	fmt.Println(newSlice)
  // 修改newSlice[1]其实就是修改a[2]
	newSlice[1] = 233
  // 下面数据都发生了变化
	fmt.Println(a)
	fmt.Println(slice)
	fmt.Println(newSlice)
	var b = [5]int{1, 2, 3, 4, 5}
	var c = b[1:3]
  // cap查看容量
	fmt.Println(len(c), cap(c))
}

golang

切片的声明及赋值 Link to heading

var s = []int{11, 12, 13, 14, 15}
s[4] = 566
fmt.Println(s)