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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值