【Go】初识Golang切片(slice)(二)

【Go】初识Golang切片(slice)(二)

一、切片常用方法

(一)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的倍数递增分配空间)

你可能感兴趣的:(go学习,go)