Go append函数:给切片添加元素/合并切片

Go的内置函数append用于动态向切片添加元素或合并切片。当追加元素超出切片容量时,会进行扩容。文章通过描述、语法、示例及注意事项,详细阐述了append如何工作,特别是它是否改变切片的内存地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

描述

语法和参数

使用示例

给切片添加元素

给切片添加多个元素

合并其它切片

注意事项

append返回的新切片与原切片是否指向同一块内存地址


描述

append函数是Go的内置函数,它可以为切片动态的添加元素。append函数返回添加后的切片。

语法和参数

函数签名

func append(slice []Type, elems ...Type) []Type
参数名称含义
slice待添加元素的切片
elems要添加的元素

append函数允许一次性添加多个值。

使用示例

给切片添加元素

package main

import "fmt"

func main() {
	demo := make([]int, 0, 1)
	demo = append(demo, 1)
	fmt.Println("demo:", demo)
    // outputs: demo: [1]
}

给切片添加多个元素

package main

import "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 main

import "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返回的新切片与原切片是否指向同一块内存地址

根据切片的性质,当使用append函数给切片添加元素后,切片的length未超过append前的cap,则切片不会扩容,因此append返回的切片与原切片指向同一个内存地址。反之,append返回扩容后的切片,与原切片的内存地址不同:

package main

import "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
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值