知识点
go语言的函数定义更像是python和c语言的结合体,并且也有不定参数的传参以及地址传参方式,非常强大。
下面举一些例子来详细说明:
- 无参无返回值函数
func MyFunc() {
fmt.Println("无参返回值")
}
- 有参无返回值函数
func MyFunc1(a int, b int) {
fmt.Println(a + b)
}
// 如果同样类型,可以简写成以下内容
func MyFunc2(a, b int) {
fmt.Println(a - b)
}
// 不推荐下列写法
func MyFunc3(a, b string, c float64) {
fmt.Println(a, b, c)
}
- 无参有返回值函数
// 有返回值的函数需要通过return中断函数
func myfunc01() int {
return 666
}
// 给返回值起一个变量名
func myfunc02() (result int) {
return 666
}
// go语言推荐写法,最常用写法
func myfunc03() (result int) {
result = 666
return //等价于return 666
}
- 多返回值函数
func myfunc04() (int, int, int) {
return 1, 2, 3
}
// 给返回值变量起名字
func myfunc05() (a int, b int, c int) { // 可以写成(a, b, c int)
a, b, c = 1, 2, 3
return
}
- 不定参数函数
func myfunc(tmp ...int) {
for i := range tmp {
fmt.Println("data = ", tmp[i])
}
}
func test(args ...int) {
myfunc(args...) //传递不定参数
}
func test1(args ...int) {
// 从第二个元素开始一直传递到末尾, 类似python的切片
myfunc(args[2:]...)
// 从第0个元素一直传递到第一个元素,左闭右开区间
myfunc(args[:2]...)
}