1、定义一个切片和切片的常见操作

package main

import "fmt"

//切片

//数组的长度在定义后就不能在变了,go语言提供了一个数组切片slice来弥补数组的不足,他的长度是可以更改的


func main() {
	//申明一个空的切片

	var s1 []int

	s2 := []int{}

	//使用make创建一个切片,当前的长度为0
	var s3 []int = make([]int,0)

	s4 := make([]int,0,0)

	fmt.Println(s1)
	fmt.Println(s2)
	fmt.Println(s3)
	fmt.Println(s4)

	//[]
	//[]
	//[]
	//[]

	arr := [...]int{0,1,2,3,4,5,6,7,8,9}

	fmt.Println("arr[2:6]=",arr[2:6])
	//arr[2:6]= [2 3 4 5]

	fmt.Println("arr[:6]=",arr[:6])
	//arr[:6]= [0 1 2 3 4 5]

	fmt.Println("arr[2:]=",arr[2:])
	//arr[2:]= [2 3 4 5 6 7 8 9]

	fmt.Println("arr[:]=",arr[:])
	//arr[:]= [0 1 2 3 4 5 6 7 8 9]


	//内建函数,append,给切片的尾部增加元素
	var s5 []int

	//追加一个元素
	s5 = append(s5,1)
	fmt.Println(s5)
	//[1]

	//追加2个元素
	s5 = append(s5,2,3)
	fmt.Println(s5)
	//[1 2 3]


	//创建一个指定大小的切片
	s6 := make([]int,5)

	s6 = append(s6,6)
	fmt.Println(s6)
	//[0 0 0 0 0 6]

	//创建一个有值的切片
	s7 := []int{1,2,3,4}

	s7 = append(s7,5)
	fmt.Println(s7)
	//[1 2 3 4 5]

	s7 = append(s7,6,7)
	fmt.Println(s7)
	//[1 2 3 4 5 6 7]
}

  

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

2、切片操作是引用,修改切片后的数组也会导致原来的切片数据变化,这里和python是不同的

package main

import "fmt"

func main() {
	arr1 := [...]int{0,1,2,3,4,5,6,7,8,9}

	s1 := arr1[2:]
	fmt.Println(s1)
	//[2 3 4 5 6 7 8 9]
	s1[0] = 100
	fmt.Println(s1)
	//[100 3 4 5 6 7 8 9]
	fmt.Println(arr1)
	//[0 1 100 3 4 5 6 7 8 9]



}

  

 3、查看切片的长度和容量,切片出来的数据的容量是从开始的下标开始,到切片的原始数据的结尾做为结束

package main

import "fmt"

func main() {
	arr1 := [...]int{0,1,2,3,4,5,6,7,8,9}

	s1 := arr1[2:]
	fmt.Println(s1)
	//[2 3 4 5 6 7 8 9]
	s1[0] = 100
	fmt.Println(s1)
	//[100 3 4 5 6 7 8 9]
	fmt.Println(arr1)
	//[0 1 100 3 4 5 6 7 8 9]


	//go语言的切片可以向后扩展,但是不能向前扩展
	arr2 := [...]int{0,1,2,3,4,5,6,7,8,9}
	s9 := arr2[2:6]
	fmt.Println(s9)
	//[2 3 4 5]
	s := s9[3:5]
	fmt.Println(s)
	//[5 6]

	fmt.Printf("s9=%v,长度为%d,容量为%d\n",s9,len(s9),cap(s9))
	//s9=[2 3 4 5],长度为4,容量为8

}

  

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄