append函数可以动态为go语言切片添加元素,每个切片会指向一个底层数组,这个数组能容纳一定数量的元素,当底层数组不能容纳新元素时,切片会自动扩容。此时的切片指向的底层数组就会更换。
package main
import "fmt"
func main(){
city := []string{"北京","上海","广州"}
fmt.Printf("%v,len:%d,cap:%d,ptr:%p \n",city,len(city),cap(city),city)
city = append(city,"深圳")
fmt.Printf("%v,len:%d,cap:%d,ptr:%p \n",city,len(city),cap(city),city)
}
//输出:此时地址是不一样的
[北京 上海 广州],len:3,cap:3,ptr:0xc000072180
[北京 上海 广州 深圳],len:4,cap:6,ptr:0xc00005a180
append删除切片中元素
package main
import "fmt"
func main(){
city := [...]string{"北京","上海","广州"}
city2 := city[:]
fmt.Println("city:",city)
city2 = append(city2[0:1],city2[2:]...)
fmt.Println("city2",city2)
}
//输出
city: [北京 上海 广州]
city2: [北京 广州]