Golang append... 与 append 的区别



我们知道golang语言对切片、map 数据类型对追加有两种方式

一种是arr1 = append(arr1,v),一种是arr1= append(arr1,arr2...) 来看看这段代码

package main

type people struct {

Age int

Name string

}

func main() {

p1 := &people{

Age: 29,

Name: "aaa",

}

p2 := &people{

Age: 26,

Name:"bbb",

}

p3 := &people{

Age: 39,

Name: "ccc",

}

par1 := make([]people,1)

par1[0] = *p1

par2 := make([]people,2)

par2[0] = *p2

par2[1] = *p3

for _,v := range par2{

par1 = append(par1,v)

}

par1 = append(par1,par2...)

}

这两种写法有啥区别?那种方法好?

区别就是第一种写法,追加的时候,切片1需要不断(多次)申请内存,甚至是扩容

第二种写法只需要扩容一次,明显第二种无论是方便性,还是效率都要高于第一种

第二种写法是不错的写法,我是在看一些优秀的开源框架中学习到的,记录下来,Mark!





© 2020-2030 58jkw.com 版权所有 备案号:备案号:粤ICP备14046384号-1

友情连接:好玩小游戏 | 双人小游戏