在前面几篇文章,接触到的最多的是main
函数。Go
如同c/c++
语言一样,对于声明函数也有属于自己的一套规则。
在前面几篇文章,接触到的最多的是main
函数。Go
如同c/c++
语言一样,对于声明函数也有属于自己的一套规则。
func functionName(param paramType,[param1 param1Type,...])(returnVal valType,[rerutnVal1 return1Type,...]) {
}
在Go
当中定义函数
使用关键字func
,后跟方法名(functionName)
,参数列表(param paramType)
以及函数返回值
,且函数返回可以返回多个值。
package main
import (
"fmt"
)
func fib(n int) int {
if n == 0 {
return 0
}
if n == 1 {
return 1
}
return fib(n-1) + fib(n-2)
}
func main() {
num := fib(10)
fmt.Printf("10的斐波那契值: %d \n", num)
}
若一组形参或返回值有相同的类型,其实是不需要为每个参数都带上类型的,只需在这组相同类型的形参或返回值最后一个形参或返回值带上类型即可,这段话看起来似乎有点绕,其实意思就是下面这般。
func myFunc(a,b,c int) (d,e,f int){ ... }
func myFunc(a int,b int,c int) (d int,e int,f int){ ... }
func myFunc(a,b,c int) (int,int,int){ ... }
以上三种写法是等同的,返回值如果定义了返回参数,在函数体最后一行需要加上return
。
package main
import (
"fmt"
)
func cacul(num1, num2 int) (sum, diff int) {
sum = num1 + num2
diff = num1 - num2
return
}
func cacul2(num1 int, num2 int) (sum int, diff int) {
sum = num1 + num2
diff = num1 - num2
return
}
func cacul3(num1, num2 int) (int, int) {
sum := num1 + num2
diff := num1 - num2
return sum, diff
}
func main() {
sum, diff := cacul(15, 10)
fmt.Printf("调用第一个函数,sum = %d,diff= %d\n", sum, diff)
sum2, diff2 := cacul2(25, 30)
fmt.Printf("调用第二个函数,sum2 = %d,diff2 = %d\n", sum2, diff2)
sum3, diff3 := cacul3(35, 40)
fmt.Printf("调用第三个函数,sum3 = %d,diff3 = %d\n", sum3, diff3)
}