go函数参数传递和值交换

在go语言中两个值的交换很方便, 如下三种方式都可以使用

1.最简单的操作(很多语言没有这种便利)

a, b = b, a

2.利用函数多返回值, 也可非常便利的交换两个值

func swap(a int, b int) (int, int) {

         return b, a

}

3.利用指针交换两个值

swap(a *int, b *int) {

         temp := *a

         *a = *b

         *b = temp

}

 

如下两种方式不能完成两个值交换

4.函数值传递

func swap(a int, b int) {       

        temp = a

        a =b

        b = temp

}

5.指针传递(没有改变到原值)

func swap(a *int, b *int) {

         temp := a

         a = b

         b = temp

}

 

函数参数传递其实就只需要记住一点:

将参数拷贝一份, 拷贝出来的这份参数称为副本,  函数中只操作是副本

看如下操作:

func main() {
    a := 100
    b := 200
    
    swap(a,b)  

    fmt.Println("a = ", a)    // 还是100
    fmt.Println("b = ", b)    // 还是200
}

func swap(a *int, b *int) {
    temp := a
    a = b 
    b = temp
}

在如上函数中a和b的地址交换了, 但操作的是副本

所以是无法改变原值的

如果换成副本中直接更改原值, 这就能改变原值(如上第3.个操作)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值