Go-Task7-函数

本文详细介绍了Go语言中的函数定义、值传递与引用传递、变长参数、多返回值、命名返回值、匿名函数以及闭包的概念和用法,通过实例解析了函数在Go语言中的各种特性和应用场景,特别是闭包在实现斐波那契数列中的应用。
摘要由CSDN通过智能技术生成

1.函数

1.1函数定义

在go语言中函数定义格式如下:

func functionName([parameter list]) [returnTypes]{
   
   //body
}
  • 函数由func关键字进行声明。
  • functionName:代表函数名。
  • parameter list:代表参数列表,函数的参数是可选的,可以包含参数也可以不包含参数。
  • returnTypes:返回值类型,返回值是可选的,可以有返回值,也可以没有返回值。
  • body:用于写函数的具体逻辑

例1:

下面的函数是用于求两个数的和

func GetSum(num1 int, num2 int) int {
   
	result := num1 + num2
	return result
}

这个函数传递了两个参数,分别为num1num2,并且他们都为int类型,将相加后的结果进行返回。

上面这个函数还可以这样定义

func GetSum1(num1, num2 int) int {
   
	result := num1 + num2
	return result
}

当num1和num2是相同类型的时候我们可以省略掉前面的类型,go编译器会自动进行推断。

1.2值传递与引用传递

因为在go语言中存在值类型与引用类型,所以在函数参数进行传递时也要注意这个问题。

  • 值传递是指在函数调用过程中将实参拷贝一份到函数中,这样在函数中如果对参数进行修改,将不会影响到实参。
  • 引用传递是指在函数调用过程中将实参的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实参。

如果想要函数可以直接修改参数的值,那么我们可以用指针传递,将变量的地址作为参数传递到函数中。下面的这个例子为大家演示了以上的几种情况。

例2:

func paramFunc(a int, b *int, c []int) {
   
	a = 100
	*b = 100
	c[1] = 100

	fmt.Println("paramFunc:")
	fmt.Println(a)
	fmt.Println(*b)
	fmt.Println(c)
}

func main() {
   
	a := 1
	b := 1
	c := []int{
   1, 2, 3}
	paramFunc(a, &b, c)

	fmt.Println("main:")
	fmt.Println(a)
	fmt.Println(b)
	fmt.Println(c)
}

程序输出如下

paramFunc:
100
100
[1 100 3]
main:
1
100
[1 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值