一、切片常用方法
(一)append()方法
func append(slice []Type, elems ...Type) []Type
append方法返回了一个切片,这个切片的内容是slic和elems的集合。不会影响原切片!
package main
import "fmt"
func main() {
slice1:= []int{1,2,3,4}
fmt.Println("slice1原始值:",slice1)
slice2 := append(slice1, 5,6,7,8)
fmt.Println("slice1进行append后值:",slice1)
fmt.Println("slice2原始值:",slice2)
}
运行main方法,得到结果如下
slice1原始值: [1 2 3 4]
slice1进行append后值: [1 2 3 4]
slice2原始值: [1 2 3 4 5 6 7 8]
(二)copy()方法
func copy(dst, src []Type) int
copy方法使得src的值复制给dst,并返回作用的位数,若src的位数大于dst,copy方法不会超过dst的长度。
和append方法不同,copy方法直接作用于参数。
要注意的是copy方法的参数都是切片,因此若需要复制数组时,要先将数组转化为切片的形式。
package main
import "fmt"
func main() {
slice1:= []int{1,2,3,4}
fmt.Println("slice1原始值:",slice1)
array1 := []int{8,9,10,11,12,13,14}
copyNum := copy(slice1, array1[:])
fmt.Println("slice1进行copy后值:",slice1)
fmt.Println("copy方法返回值:",copyNum)
}
结果如下
slice1原始值: [1 2 3 4]
slice1进行copy后值: [8 9 10 11]
copy方法返回值: 4
(三)len()方法
func len(v Type) int
len方法可以查看go中变量的长度
package main
import "fmt"
func main() {
slice1:= []int{1,2,3,4}
fmt.Println("slice1原始值:",slice1)
fmt.Println("slice1的len方法值:",len(slice1))
slice1 = append(slice1, 5,6,7,8)
fmt.Println("slice1进行append后的len方法值:",len(slice1))
}
运行main方法,结果如下
slice1原始值: [1 2 3 4]
slice1的len方法值: 4
slice1进行append后的len方法值: 8
(四)cap()方法
func cap(v Type) int
cap方法可以查看切片的容量(cap>len)
package main
import "fmt"
func main() {
slice1:= []int{1,2,3,4}
fmt.Println("slice1原始值:",slice1)
fmt.Println("slice1的len方法值:",len(slice1))
fmt.Println("slice1的cap方法值:",cap(slice1))
slice1 = append(slice1, 5)
fmt.Println("slice1进行append后的len方法值:",len(slice1))
fmt.Println("slice1进行append后的cap方法值:",cap(slice1))
}
运行main方法,得到结果
slice1原始值: [1 2 3 4]
slice1的len方法值: 4
slice1的cap方法值: 4
slice1进行append后的len方法值: 5
slice1进行append后的cap方法值: 8
(ps.append后,若cap小于len,切片会重新分配空间,小于1024时按2的倍数递增分配空间)