Go不是一种基于类并且有层次结构的语言,也不使用通常的方式处理对象。如果你仅仅打算实现一个函数,那就不用考虑有关对象的内容。函数就是一个值(Values),是“一等对象“。
如下,声明一个函数
var myFunc = func(a, b int) int {
return a + b
}
可以指定参数类型和返回值类型,如果指定了返回值类型,则函数中必须有return语句。
函数值(value)被赋值给了变量myFunc。也可以按照通常的方式定义函数,这是变量myFunc就是函数的名称。
func myFunc(a, b int) int {
return a + b
}
无论那种方式,函数都可以使用下面的方式调用:
fmt.Println(myFunc(1, 2))
可以在return语句中返回多个值,并且可以在函数头中指定返回值的名称。
例如:
func myFunc(a, b int) (sum int) {
sum = a + b
return
}
sum就是函数的返回值。
返回多个值也很简单:
func myFunc(a, b int) (int, int) {
return a + b, a - b
}
必须全部接收函数的两个返回值:
x,y := myFunc2(1, 4)
fmt.Println(x,y)
其他语言中可以选择只接收一个返回值,但在Go语言中不可以。