Golang学习笔记(十)函数申明及变量作用域

版权声明:如需转载、粘贴内容,必须在转载和粘贴文中标明文章内容出至 https://blog.csdn.net/ynzcxx/article/details/83786560

标准函数格式:func 函数名 (参数列表) (返回值列表)
func funcName (parametername1 type1,parametername2 type2...) (output1 type1,output2 type2...)
1、可以使用可变参数:func funcName(arg ...int)表示接受不定数量的int类型参数。
2、Golang的参数列表,如果相邻的两个或多个参数数据类型是一样的,那么只用在最后一个参数添加数据类型。
3、Golang可以返回多个值,函数申明时如果有返回值,必须在函数体中使用return关键字提供返回值。
4、返回值可以是返回数据的数据类型,或者是变量+变量类型的组合。
5、如果只有一个返回值且不申明返回值变量,那么可以省略包括返回值的括号。
 

首先申明两个全局变量。

var a int = 7
var b int = 9

接着写一段标准的函数:

func sum1(a, b int) int {
	a++
	b += 2
	c := a + b
	fmt.Printf("sum()中a=%d\n", a)
	fmt.Printf("sum()中b=%d\n", b)
	fmt.Printf("sum()中c=%d\n", c)
	return c
}

在main()中调用函数sum1(),将全局变量a、b赋为参数,将返回c的值19,并打印出结果。

sum()中a=8
sum()中b=11
sum()中c=19

再来一个带返回变量的例子:

func sum2(a, b int) (dd int) {
	a++
	b += 2
	c := a + b
	fmt.Printf("sum()中a=%d\n", a)
	fmt.Printf("sum()中b=%d\n", b)
	fmt.Printf("sum()中c=%d\n", c)
    dd = c
	return
}

这里的return虽然什么都没有带,但还是会返回dd的数值。

func sum2(a, b int) (dd int) {
	a++
	b += 2
	c := a + b
	fmt.Printf("sum()中a=%d\n", a)
	fmt.Printf("sum()中b=%d\n", b)
	fmt.Printf("sum()中c=%d\n", c)
	return c
}

如果写成这样,实际返回的其实也是dd,而不是c。

所以在函数中,可以直接将最后的值写在返回参数中:

func sum3(a, b int) (c int) {
	a++
	b += 2
	c = a + b
	fmt.Printf("sum()中a=%d\n", a)
	fmt.Printf("sum()中b=%d\n", b)
	fmt.Printf("sum()中c=%d\n", c)
	return
}

PS:这时的c就不再用申明了,因为在返回参数里已经申明过了。

多返回值的函数:

func sum4(a, b int) (c, d int) {
	a++
	b += 2
	c = a + b
	d = a * b
	return
}

这个函数运行后,必须要有两个变量来接受返回值。

x,y = sum4(a, b)

如果只想取回其中一个变量而另外一个没有用的话,可以用匿名变量_来接收。

_,c = sum4(a, b)

这么来,只有c接受了sum4()函数的第二个返回值。

猜你喜欢

转载自blog.csdn.net/ynzcxx/article/details/83786560