废话不多说,直接上例子:
//先定义一个求两个数之和的函数
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