首页 > 编程语言 > 详细

go语言之切片

时间:2019-05-13 23:48:58      阅读:203      评论:0      收藏:0      [点我收藏+]

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]
}

  

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

}

  

 

go语言之切片

原文:https://www.cnblogs.com/bainianminguo/p/10859723.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!