golang中函数调用

Go语言是按值传递的,这意味着函数内部对参数的修改不会影响到调用者。当需要在函数中改变原始变量的值时,可以使用指针。指针包含变量的内存地址,传递指针意味着传递内存地址,允许函数直接修改原变量。通过在函数定义中使用`&`获取变量地址,并在修改变量时使用`*`进行解引用,可以实现预期的更改效果。

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

将值传递给函数时,改函数中的每一个更改都不会影响调用方,go是按值传递的编程语言,这意味着每次向函数传递值时,go都会使用该值并创建本地副本,内存中的新变量,在函数中对该变量所做的更改都不会影响你向函数发送的更改。就是开辟了新的内存空间。

 例如,假设你创建了一个用于更新人员姓名的函数

package main
func main(){
firstName := "john"
updateName(firestname)
fmt.println(firstName)
}
func updateName(name string) {
 name = "david"
}

即使你在函数内将改名称更改为david,输出仍未john。由于uodataName函数中的更改仅会修改本地副本,因为输出不会发生改变,go传递变量的值,而不是变量本身

 如果你希望在updateName函数中进行的更改会影响main函数中的firstName变量,则需要使用指针。指针是包含另一个变量的内存地址的变量。当你发送指向某个函数的指针时,不会传递值,而是传递内存地址。因此对该变量所做的每个更改都会影响调用方。

go中,有两个运算符可用于处理指针

& 运算符使用其后对象的地址

* 运算符取消引用指针,也就是说,你可以前往指针中包含的地址访问其中的对象

package main
func main(){
  firstName := "john"
  updateName(&firstName)
  fmt.println(fristName)
}
  func updateName( name *string) {
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值