golang中的函数

函数是构建Go程序的基础部件;所遇有趣的事情都是在它其中发生的。函数
的定义看起来像这样:
Listing 3.1. 函数定义

type mytype int 新的类型,参阅第 5 章
golang-func
0 保留字func用于定义一个函数;
1 函数可以定义用于特定的类型,这类函数更加通俗的称呼是method。这
部分称作receiver而它是可选的(可参考:http://blog.haohtml.com/archives/13766)。如下图:

golang-struct-func

2 funcname是你函数的名字;
3 int类型的变量q作为输入参数。参数用pass-by-value方式传递,意味着它
们会被复制;
4 变量r和s是这个函数的命名返回值。在Go的函数中可以返回多个值。
参阅第32页的“多值返回”。如果不想对返回的参数命名,只需要提供类
型:(int,int)。如果只有一个返回值,可以省略圆括号。如果函数是一
个子过程,并且没有任何返回值,也可以省略这些内容;
5 这是函数体,注意return是一个语句,所以包裹参数的括号是可选的。

这里有两个例子,左边的函数没有返回值,右边的只是简单的将输入返回。

func subroutine(in int) {
return
}
func identity(in int) int {
return in
}

可以随意安排函数定义的顺序,编译器会在执行前扫描每个文件。所以函数原
型在Go中都是过期的旧物。Go不允许函数嵌套。然而你可以利用匿名函数实
现它,参阅本章第35页的“函数作为值”。