吾八哥学Golang(七):Golang里的函数
函数是组成代码结构的重要的一部分,在Go语言里函数由关键字func、函数名、参数列表、返回值、函数体、返回语句return组成。当然Golang里也是支持匿名函数的,匿名函数是不需要定义函数名的。同时Golang和Python一样也支持多返回值以及不定参数。需要注意的是函数名小写字母开头的只能在本包内可见,大写字母开头的才可以被其他的包使用。
函数的基本用法
来写个简单的例子熟悉下Golang里的函数的用法吧!如下:
package main
import (
"fmt"
)
func Max(a, b int) int {
if a >= b {
return a
} else {
return b
}
}
func main() {
fmt.Println(Max(10,9))
}在上面的代码中,就是一个求两个数的最大值的函数以及调用方法,这种写法跟其他语言里的没啥区别的,很好理解!
不定参数
Golang里函数支持同类型的不定参数,也支持不同类型的不定参数,先看个同类型的不定参数的用法:
package main
import (
"fmt"
)
func Sum(args ...int) int {
s := 0
for _, arg := range args {
s = s + arg
}
return s
}
func main() {
fmt.Println(Sum(10,9,3,1))
}上面代码运行后输出结果为“23”,再来看看不同的类型的不定参数的写法:
package main
import (
"fmt"
)
func TestFunc(args ...interface{}) {
for _, arg := range args {
fmt.Println(arg)
}
}
func main() {
TestFunc(1, "测试", true, 123.56, []int{11, 22, 33})
}上述代码运行结果为:
1 测试 true 123.56 [11 22 33]
多返回值
Golang里的函数支持多返回值,意思就是一个函数可以有多个返回值,来看看具体的使用方法:
package main
import (
"fmt"
)
func TestFunc(a, b int) (bool, int) {
var flag bool = false
if (a > 0) && (b > 0) {
flag = true
}
if a > b {
return flag, a
} else {
return flag, b
}
}
func main() {
fmt.Println(TestFunc(10, 9))
}以上代码执行结果为:“true 10”,在Golang里其实还可以对返回值进行命名的,就跟参数命名一样,上面的写法可以改为:
package main
import (
"fmt"
)
func TestFunc(a, b int) (flag bool, max int) {
if (a > 0) && (b > 0) {
flag = true
}
if a > b {
max = a
} else {
max = b
}
return
}
func main() {
fmt.Println(TestFunc(10, 9))
}对于多返回值,在调用的时候如果要忽略某个返回值的话则可以使用"_",在上面的TestFunc函数里有这种用法。
匿名函数
很多开发语言里支持匿名函数,匿名函数就如同变量一样被赋值或者调用,看看例子:
package main
import (
"fmt"
)
func main() {
f := func(a, b int) int {
if a > b {
return a
} else {
return b
}
}
fmt.Println(f(10, 7))
}函数还有很多细节目前没接触到,后面学习的过程中还是要逐步加深理解!