golang函数采用func (arg1 type1,arg2 type2...) (ret1 ret_type1,ret2 ret_type2){}
这样的形式。
有两个需要注意的点,一个就是golang的参数都是参数名在参数类型前,这一点在golang中非常普遍;第二点就是golang支持多返回值,并且可以为返回值指定参数名。
对于单返回值:
func f(a int, b int) int {
return a + b
}
对于多返回值(虽然这个示例可以通过更简单的方式实现a,b = b,a
,这里只是为了演示多返回值):
package main
import "fmt"
func exchange(a int, b int) (int, int) {
return b, a
}
func main(){
a := 331
b := 442
a, b = exchange(a, b)
fmt.Println("a = ", a, ",b = ", b)
}
多返回值可以指定名称,而且return可以不返回具体的值,返回值将由对应变量的值来指定:
func mulRet(a int, b string) (r1 int, r2 string) {
r1 = a + 1
r2 = b + "..."
return
}
如果多个返回值的类型相通,甚至可以省略类型至最后一个返回值处:
func mulRet2(a int, b int) (r1, r2 int) {
r1 = a + 1
r2 = b - 1
return
}
多返回值要么所有类型相同可以省略到最后,要么必须写上每一个变量的返回值。不要混用:
func mulRetTest(a int ,b string) (r1 ,r2 string,r3){
}
//(mixed named and unnamed parameters) syntax