为什么说golang参数传递为值传递?

一、函数参数传递方式

函数参数传递有2种方式:值传递和引用传递。
值传递是指调用函数时将参数值复制一份到函数,如果对函数参数进行修改,影响不到实际参数。
引用传递是指调用函数时将参数的指针传递到函数中,函数中对参数的修改,将影响到实际参数。
不同编程语言的函数参数传递方式不尽相同,例如C语言中的int、float等参数类型采用值传递的方式,而数组类型默认为引用传递,C++中的引用传递显而易见,其类型系统直接包含了引用类型。

二、Go语言中的函数传递方式

那么Go语言何种参数传递方式呢?开门见山,直接上官方说法“Go语言函数传递方式都是值传递”。int64、string等类型采用值传递比较好理解,但是为什么说slice、interface、map和channel类型也是值传递呢?先看个例子1:

package main

import "fmt"

func fun0(slice0 []int) {
   
	slice0 = append(slice0, 2)
	fmt.Println("func0 : ", slice0)
}

func main() {
   
	slice0 := []int{
   1}
	fun0(slice0)
	fmt.Println("main : ", slice0)
}

打印结果:

func0 :  [1 2]
main :  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值