标准函数格式: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()函数的第二个返回值。