本文共 1193 字,大约阅读时间需要 3 分钟。
目录
append函数是Go的内置函数,它可以为切片动态的添加元素。append函数返回添加后的切片。
函数签名
func append(slice []Type, elems ...Type) []Type
参数名称 | 含义 |
slice | 待添加元素的切片 |
elems | 要添加的元素 |
append函数允许一次性添加多个值。
package mainimport "fmt"func main() { demo := make([]int, 0, 1) demo = append(demo, 1) fmt.Println("demo:", demo) // outputs: demo: [1]}
package mainimport "fmt"func main() { demo := make([]int, 0, 1) demo = append(demo, 1, 3, 5) fmt.Println("demo:", demo) // outputs: demo: [1 3 5]}
借助append函数,可以将一个切片合并到另一个切片中:
package mainimport "fmt"func main() { s1 := []int{23, 26, 28} s2 := []int{3, 6, 9} s1 = append(s1, s2...) fmt.Println(s1) // output: [23 26 28 3 6 9]}
根据切片的性质,当使用append函数给切片添加元素后,切片的length未超过append前的cap,则切片不会扩容,因此append返回的切片与原切片指向同一个内存地址。反之,append返回扩容后的切片,与原切片的内存地址不同:
package mainimport "fmt"func main() { source := make([]int, 0, 3) fmt.Printf("source address: %p\n", source) // output: source address: 0xc0000b6020 source = append(source, 1) fmt.Printf("source address: %p\n", source) // output: source address: 0xc0000b6020 source = append(source, 2, 3) fmt.Printf("source address: %p\n", source) // output: source address: 0xc0000ba000}
转载地址:http://kjsoi.baihongyu.com/