go之关于数组

数组

package main
​
import "fmt"
​
/*func main()  {
   var a [6] int//定义6位数的数组
   a[0]=100//数组第一个值为100
   fmt.Printf("a=%v\n",a)
}*/
​
func pt(a[]int)  {//定义一个数字的数组
​
   fmt.Printf("%v\n",a)
​
}
//切片
func main()  {
   var b[6]int =[6]int{1,2,3,4,5,6}
   //包括第0个元素,第一个元素
   pt(b[0:2])
   //全部
   pt(b[0:])
   //不包括第二个元素到最后一个元素
   pt(b[2:])
   //前二个元素
   pt(b[:2])
   //全部
   pt(b[:])
}

切片操作

package main
​
import "fmt"
​
/*func main(){
   var a []int//定义空数组
   var b [6]int =[6]int{1,2,3,4,5,6}//b数组长度为6
   a=b[0:2]//将b切片,把第一个值和第二个值赋值给a
   fmt.Printf("%v\n",a)//[1,2]
   a[0]=100//a数组的第一个值赋值为100
   fmt.Printf("%v\n",b)//[100 2 3 4 5 6]
}*/
​
/*func main()  {
   var a[]int
   a=make([]int,2,2)//定义a切片长度为2,容量为2
   fmt.Printf("%v len:%d,cap:%d,addr:%p\n",a,len(a),cap(a),a)
   //[0 0] len:2,cap:2,addr:0xc04203c1d0
​
   a=append(a,100)//往a切片里添加一个值
   fmt.Printf("%v len:%d,cap:%d,addr:%p\n",a,len(a),cap(a),a)
   //[0 0 100] len:3,cap:4,addr:0xc042042480
​
   a=append(a,200)
   fmt.Printf("%v len:%d,cap:%d,addr:%p\n",a,len(a),cap(a),a)
   //[0 0 100 200] len:4,cap:4,addr:0xc042042480
​
   a=append(a,300,400)
   fmt.Printf("%v len:%d,cap:%d,addr:%p\n",a,len(a),cap(a),a)
   //[0 0 100 200 300 400] len:6,cap:8,addr:0xc042044100,地址发生了变化
}*/
​
/*func main()  {
   var a[]int = make([]int,5,5)
   b:=a
   fmt.Printf("%v addr:%p\n",a,a)
   //[0 0 0 0 0] addr:0xc04203ff50
   fmt.Printf("%v addr:%p\n",b,b)
   //[0 0 0 0 0] addr:0xc04203ff50
   b=append(b,10)
   fmt.Printf("%v addr:%p\n",a,a)
   //[0 0 0 0 0] addr:0xc04203ff50
   fmt.Printf("%v addr:%p\n",b,b)
   //[0 0 0 0 0 10] addr:0xc042058050,地址发生了变化
}*/
​
func main()  {
   var a []int
   var b [6]int =[6]int{1,2,3,4,5,6}
   a=b[3:5]//将b数组中下标为3,4的值取出来赋值给a
   fmt.Printf("%v len:%d,cap:%d\n",a,len(a),cap(a))
   //[4 5] len:2,cap:3,长度为2,容量为3是因为4之前的用不到了,4之后的仍然还在
​
   c:=a[0:1]
   fmt.Printf("%v len:%d,cap:%d",c,len(c),cap(c))
   //[4] len:1,cap:3
}

猜你喜欢

转载自blog.csdn.net/qq_36811322/article/details/87770215