美文网首页
Go语言切片快速入门

Go语言切片快速入门

作者: Jaeyok | 来源:发表于2020-11-19 20:44 被阅读0次

切片是数组的引用,引用类型,是动态变化的数组。长度可以变化

1、定义空切片

var keys []int 
keys := make([]int,0)

2、定义非空切片

var newslice []int = []int{1,2,3}
var newslice = []int{1,2,3}
newslice := []int{1,2,3}
var slc = make([]int, 4, 10)
slc = []int{1,2,3} 

slice就是一个数据结构,里面有三个元素(结构体):指针,长度,容量


切片数据结构

实例代码如下

package main

import "fmt"
func main()  {
//切片的定义
    var arr = [...]int{1,2,3,4,5}
  //定义方式一
     slice := arr[1:4] //从第1个元素到第3个元素开始引用 左包含右不包含
     fmt.Println(slice)
     fmt.Println(len(slice))
     fmt.Println(cap(slice))
     fmt.Println(&slice[0])//第一个元素指向数组第一个元素的地址
     fmt.Println(&arr[1])
     //使用make来创建切片
     var slc = make([]int, 4, 10)
     slc [3]=2
     slc =[]int{1,2,3}
     var newslice []int = []int{1,2,3}
     fmt.Println("slc=",slc)
     fmt.Println(newslice)

     //切片遍历两种方式
     for i:=0; i<len(newslice); i++{
        fmt.Println(i,newslice[i])
     }

     for i, v := range newslice{
        fmt.Println(i,v)
     }
     //切片是引用类型可以改变引用的所有数组/切片
     slc2 := slice[:]
     slc2[0]=100
     fmt.Println("slc:", slc)
     fmt.Println("arr:", arr)
     //append使用
     var slice2 []int = []int{1,2,3,4,5}
     slice2 = append(slice2, 100) //必须要有变量接收
     slice3 :=append(slice2, slice2...)//append一个切片
     //append又创建了一个数组,slice3指向这个数组,slice指向自己的数组。
     slice3[1]=120
    fmt.Println("slice2:", slice2)
    fmt.Println("slice3:", slice3)
     //切片的copy,两个切片数据独立的空间, 两个参数都必须为切片
     slice4 := make([]int, 12)
     copy(slice4, slice3)
     fmt.Println("拷贝之后的slic",slice4)

 }

切片是引用类型,当作为参数传递给函数在内部修改切片数组,会直接修改外面的切片数值。

相关文章

网友评论

      本文标题:Go语言切片快速入门

      本文链接:https://www.haomeiwen.com/subject/cpuliktx.html