废话不多说,直接上例子:
//先定义一个求两个数之和的函数 func intSum(x int, y int) int { return x + y } //一个既不需要参数 也没有返回值的函数 func sayHello() { fmt.Println("Hello 沙河") }
上例子:
func main() { sayHello() ret := intSum(10, 20) fmt.Println(ret) }
注意: 调用有返回值的函数时,可以不接收其返回值。
函数的参数中 如果相邻变量的类型相同,则可以省略其中一个类型,例如:
func intNum(x,y int) int { return x + y }
什么是可变参数?
可变参数是指函数的参数数量不固定。Go中的可变参数通过在参数名后加 ... 来标识。
注意:可变参数通常要作为函数的最后一个参数。
举个例子吧:
func intSum2(x ...int) int { fmt.Println(x) //x是一个切片 sum := 0 for _. v := range x { sum = sum + v } return sum }
调用上面函数:
ret1 := intSum2() //什么都不传 fmt.Println(ret1) //结果: 0 ret2 := intSum2(10,20) fmt.Println(ret2) //结果: 30
本质上:函数的可变参数是通过切片来实现的。
函数如果有多个返回值时必须使用() 将所有的返回值包裹起来。
上例子:
func calc(x, y int) (int, int) { //包裹起来 sum := x + y sub := x - y return sum, sub }
函数定义时 可以给返回值命名,并在函数体中直接使用这些变量,最后通过return 关键字返回。
例:
func calc(x, y int) (sum, sub int) { //这里给返回值命名 sum,sub sum = x + y sub = x - y return //这里直接用 return 关键字就行 }
当我们的一个函数返回值类型为slice时, nil可以看做是一个有效的slice,没必要显示返回一个长度为0的切片。
func someFunc(x string) []int { if x == "" { return nil // 没必要返回[]int{} } ... }
原文:https://www.cnblogs.com/zhukaijian/p/12879958.html