欢迎您的访问
专注于Java技术系列文章的Java技术分享网站
精选技术专栏

三十七、Go 语言 – 函数 – 引用传值

JetBrains全家桶破解:IDEA 2021 破解到 2099 年教程

文章永久连接:https://tech.souyunku.com/?p=5350

引用传值是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数

范例

这个 swap 函数,通过引用传值,交换两个变量的值

/* 定义交换值函数*/
func swap(x *int, y *int) {
   var temp int
   temp = *x    /* 保持 x 地址上的值 */
   *x = *y      /* 将 y 值赋给 x */
   *y = temp    /* 将 temp 值赋给 y */
}

以下我们通过使用引用传递来调用 swap() 函数:

/**
 * file: main.go
 * author: 搜云库技术团队(tech.souyunku.com)
 * Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
 */

package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var a int = 13
   var b int= 17

   fmt.Printf("交换前,a 的值 : %d\n", a )
   fmt.Printf("交换前,b 的值 : %d\n", b )

   /* 调用 swap() 函数
   * &a 指向 a 指针,a 变量的地址
   * &b 指向 b 指针,b 变量的地址
   */
   swap(&a, &b)

   fmt.Printf("交换后,a 的值 : %d\n", a )
   fmt.Printf("交换后,b 的值 : %d\n", b )
}

func swap(x *int, y *int) {
   var temp int
   temp = *x    /* 保存 x 地址上的值 */
   *x = *y      /* 将 y 值赋给 x */
   *y = temp    /* 将 temp 值赋给 y */
}

编译运行以上 Go 语言范例,输出结果如下

$ go run main.go 
交换前,a 的值 : 13
交换前,b 的值 : 17
交换后,a 的值 : 17
交换后,b 的值 : 13

干货推荐

本站推荐:精选优质专栏

附录:GOlang 教程:系列文章

赞(80) 打赏



版权归原创作者所有,任何形式转载请联系作者;搜云库技术团队 » 三十七、Go 语言 – 函数 – 引用传值

JetBrains全家桶破解:IDEA 2021 破解到 2099 年教程
JetBrains全家桶破解:IDEA 2021 破解到 2099 年教程

评论 抢沙发

一个专注于Java技术系列文章的技术分享网站

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏