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

三十四、Go 语言函数值传递调用

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

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

值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数

Go 语言默认使用值传递,即在调用过程中不会影响到实际参数

范例

我们先定义一个 swap() 函数用来交换两个变量的值

/* 定义相互交换值的函数 */
func swap(x, y int) int {
   var temp int

   temp = x /* 保存 x 的值 */
   x = y    /* 将 y 值赋给 x */
   y = temp /* 将 temp 值赋给 y*/

   return temp;
}

接下来我们使用值传递调用刚刚定义的 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 = 7

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

   /* 通过调用函数来交换值 */
   swap(a, b)

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

/* 定义相互交换值的函数 */
func swap(x, y int) int {
   var temp int

   temp = x /* 保存 x 的值 */
   x = y    /* 将 y 值赋给 x */
   y = temp /* 将 temp 值赋给 y*/

   return temp;
}

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

$ go run main.go 

交换前 a 的值为 : 13
交换前 b 的值为 : 7
交换后 a 的值 : 13
交换后 b 的值 : 7

我们会发现,我们原本设想 a 和 b 的值会互换,但实际上没有,这就是值传递的好处

如果想真正交换 a 和 b 的值,我们可以使用 引用传递

干货推荐

本站推荐:精选优质专栏

附录:GOlang 教程:系列文章

赞(83) 打赏



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

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

评论 抢沙发

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

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

微信扫一扫打赏

微信扫一扫打赏