Golang的指针类型传递

本文探讨了Golang中切片的值传递特性,指出虽然切片传递是引用传递,但在追加元素时,由于切片的容量变化,原始切片的len和cap并未更新。因此,直接对传递的切片进行append操作在原函数中无法察觉。解决方案是通过调整切片首元素指针来访问新增元素。

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

关于Golang的指针传递

首先,我们先来看一段代码

package main

import "fmt"

func main(){
   
	var i []int
	try(i)
	fmt.Println(i) //[]
}

func try(i []int){
   
	i = append(i, 1)
}

在这里,理论上来说本应该打印[1],因为切片为一个指针,在try函数对其进行了append,其本来指向的地址也应该改变。但是,这里却为空

Golang的值传递

首先,Go这门语言对参数的传递都是值传递的,也就是说,在传递切片i的时候,函数只是复制了它本身的引用(其本身是个指针),如:

package main

import "fmt"

func main(){
   
	var i []int=[]int{
   0}
	try(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值