Go切片基础知识
package main
import "fmt"
//声明,初始化
var slice0 []int
var slice1 []int=[]int{0,1,2,3,4}
var slice2 =[]int{0,1,2,3,4,5}
func slice(){
a:=[]int{1,2,3}
fmt.Println(slice0,slice1,slice2)
fmt.Printf("%T,%T,%T\n",slice0,slice1,slice2)
fmt.Printf("slice0 的长度为:%d,容量为:%d\n", len(slice0), cap(slice0))
fmt.Println(a)
fmt.Println(slice0 == nil)
}
func makeslice(){
a := make([]int, 2)
b := make([]int, 2, 10)
fmt.Println(a, b)
fmt.Println(a == nil)
fmt.Println(len(a), len(b))
fmt.Println(cap(a), cap(b))
}
func appendslice(){
var c []int=make([]int, 2)
d := make([]int, 2, 10)
fmt.Println("c是",c,len(c), len(c))
c=append(c,1,2,3)
fmt.Println("c是",c,len(c), len(c))
fmt.Println("d是",d,len(d), len(d))
d=append(d,c...)
fmt.Println("d是",d,len(d), len(d))
}
func copyslice(){
var c []int=make([]int, 2)
c=[]int{1,2}
d := make([]int, 2, 10)
d=c
fmt.Println("c是",c,len(c), len(c))
fmt.Println("d是",d,len(d), len(d))
c[0]=3
fmt.Println("c是",c,len(c), len(c))
fmt.Println("d是",d,len(d), len(d))
d[0]=5
fmt.Println("c是",c,len(c), len(c))
fmt.Println("d是",d,len(d), len(d))
//可见Slice是引用类型
e := make([]int, 2, 10)
copy(e,c)
fmt.Println("c是",c,len(c), len(c))
fmt.Println("e是",e,len(e), len(d))
c[1]=9
fmt.Println("c是",c,len(c), len(c))
fmt.Println("e是",e,len(e), len(d))
}
func visit(slice []int){
for _,d:=range slice{
fmt.Println(d,"\t")
}
}
func main() {
slice()
makeslice()
appendslice()
copyslice()
visit(slice1)
}