吾八哥学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)) }
函数还有很多细节目前没接触到,后面学习的过程中还是要逐步加深理解!