golang 数组上创建切片

数组上创建切片

package main


import "fmt"


func main() {
  /*
  sliece := arr[start:end]
    切片中的数据:[start,end]
    arr[:end],从头到end
    arr[start:]从start到末尾


  从已有的数组上,直接创建切片,该切片的底层数组就是当前的数组。
    长度是从start到end切割的数据。
    但是容量从start到数组的末尾。


  */
  a :=[10]int{1,2,3,4,5,6,7,8,9,10}
  fmt.Println("_____________1.已有数组直接创建切片__________________")
  s1 :=a[:5]
  s2 :=a[3:8]
  s3 :=a[5:]
  s4 :=a[:]


  fmt.Println("a:",a)
  fmt.Println("s1:",s1)
  fmt.Println("s1:",s2)
  fmt.Println("s1:",s3)
  fmt.Println("s1:",s4)


  fmt.Printf("%pn",&a)
  fmt.Printf("%pn",s1)


  fmt.Println("____________2.长度和容量_____________")
  fmt.Printf("s1   len:%d,cap:%dn",len(s1),cap(s1)) //s1   len:5,cap:10
  fmt.Printf("s2   len:%d,cap:%dn",len(s2),cap(s2)) //s2   len:5,cap:7
  fmt.Printf("s3   len:%d,cap:%dn",len(s3),cap(s3)) //s3   len:5,cap:5
  fmt.Printf("s4   len:%d,cap:%dn",len(s4),cap(s4)) //s4   len:10,cap:10


  fmt.Println("____________3.更改数组的内容_____________")
  a[4] = 100
  fmt.Println(a)
  fmt.Println(s1)
  fmt.Println(s2)
  fmt.Println(s3)
  fmt.Println(s4)


  fmt.Println("____________4.更改切片内容_____________")
  s2[2] = 200
  fmt.Println(a)
  fmt.Println(s1)
  fmt.Println(s2)
  fmt.Println(s3)




  fmt.Println("____________4.更改切片内容_____________")
  s1 = append(s1,1,1,1,1)
  fmt.Println(a)
  fmt.Println(s1)
  fmt.Println(s2)
  fmt.Println(s3)


  fmt.Println("____________5.添加元素切片扩容_____________")
  fmt.Println(len(s1),cap(s1))
  s1 = append(s1,2,2,2,2,2)
  fmt.Println(a)
  fmt.Println(s1)
  fmt.Println(s2)
  fmt.Println(s3)
  fmt.Println(len(s1),cap(s1))
  fmt.Printf("%pn",s1)
  fmt.Printf("%pn",&a)




}

运行输出:

_____________1.已有数组直接创建切片__________________
a: [1 2 3 4 5 6 7 8 9 10]
s1: [1 2 3 4 5]
s1: [4 5 6 7 8]
s1: [6 7 8 9 10]
s1: [1 2 3 4 5 6 7 8 9 10]
0xc00001a280
0xc00001a280
____________2.长度和容量_____________
s1   len:5,cap:10
s2   len:5,cap:7
s3   len:5,cap:5
s4   len:10,cap:10
____________3.更改数组的内容_____________
[1 2 3 4 100 6 7 8 9 10]
[1 2 3 4 100]
[4 100 6 7 8]
[6 7 8 9 10]
[1 2 3 4 100 6 7 8 9 10]
____________4.更改切片内容_____________
[1 2 3 4 100 200 7 8 9 10]
[1 2 3 4 100]
[4 100 200 7 8]
[200 7 8 9 10]
____________4.更改切片内容_____________
[1 2 3 4 100 1 1 1 1 10]
[1 2 3 4 100 1 1 1 1]
[4 100 1 1 1]
[1 1 1 1 10]
____________5.添加元素切片扩容_____________
9 10
[1 2 3 4 100 1 1 1 1 10]
[1 2 3 4 100 1 1 1 1 2 2 2 2 2]
[4 100 1 1 1]
[1 1 1 1 10]
14 20
0xc0000160a0
0xc00001a280


Process finished with exit code 0

golang 数组上创建切片

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注