go语言:函数参数传递详解

参数传递是指在程序的传递过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程。比较常见的参数传递有:值传递,按地址传递参数或者按数组传递参数。

package main

import (
	"fmt"
)

func main() {

	//1 传参 值传递
	x := 5

	y := 10

	swapValue(x, y)

	fmt.Println("值传递", x, y)

	//2引用传递
	x = 5

	y = 10

	swap(&x, &y)

	fmt.Println("引用传递", x, y)

	//3数组元素作为函数参数

	var s = [5]int{1, 2, 3, 4, 5}

	functionValue(s[2])

	fmt.Println("3数组元素作为函数参数", s[2])

	//4数组名作为函数参数

	// 和其他语言不同的是,go语言在将数组名作为函数参数的时候,
	// 参数传递即是对数组的复制。在形参中对数组元素的修改都不会影响到数组元素原来的值。
	// 这个和上面的类似,就不贴代码了,有兴趣的自行编写代码测试下吧。

	// 5、slice作为函数参数
	//在使用slice作为函数参数时,进行参数传递将是一个地址拷贝,即将底层数组的内存地址复制给参数slice。这时,对slice元素的操作就是对底层数组元素的操作
	var a = [5]int{1, 2, 3, 4, 5}

	var s1 []int = a[:]

	function(s1)

	fmt.Println("5、slice作为函数参数", s1[0])

	//6. 函数作为参数
	var a1, b1 int = 5, 6

	f := sum

	functionFunc(a1, b1, f)
}
func functionFunc(a, b int, sum func(int, int) int) {

	fmt.Println("6. 函数作为参数", sum(a, b))

}

func sum(a, b int) int {

	return a + b

}
func functionValue(a int) {

	a += 100

}

func function(s1 []int) {

	s1[0] += 100

}

func swapValue(a int, b int) {

	var temp int

	temp = a

	a = b

	b = temp

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

	var temp int

	temp = *a

	*a = *b

	*b = temp

}

结果:
值传递 5 10
引用传递 10 5
3数组元素作为函数参数 3
5、slice作为函数参数 101
6. 函数作为参数 11

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值