函数
这是定义一个函数最简单的格式:
func functionName()
在括号 () 中写入 0 个或多个函数的参数(使用逗号 , 分隔),每个参数的名称后面必须紧跟着该参数的类型。
main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会 先执行该函数)。如果 main 包的源代码没有包含 main 函数,则会引发构建错误 undefined: main.main 。 main 函数既没有参数,也没有返回类型(与 C 家族中的其它语言恰好相反)。如果不小心为 main 函数添加了 参数或者返回类型,将会引发构建错误:
func main must have no arguments and no return values results.
在程序开始执行并完成初始化后,第一个调用(程序的入口点)的函数是 main.main() (如:C 语言),该函数一 旦返回就表示程序已成功执行并立即退出。
函数里的代码(函数体)使用大括号 {} 括起来。
左大括号 { 必须与方法的声明放在同一行,这是编译器的强制规定,否则你在使用 gofmt 时就会出现错误提示:
build-error: syntax error: unexpected semicolon or newline before {
(这是因为编译器会产生 func main() ; 这样的结果,很明显是误的)
Go 语言虽然看起来不使用分号作为语句的结束,但实际上这一过程是由编译器自动完成,因此才会引发像上面这样的错误
右大括号 } 需要被放在紧接着函数体的下一行。如果你的函数非常简短,你也可以将它们放在同一行:
func Sum(a, b int) int { return a + b }
对于大括号 {} 的使用规则在任何时候都是相同的(如:if 语句等)。 因此符合规范的函数一般写成如下的形式:
func functionName(parameter_list) (return_value_list) {
…
}
其中: parameter_list 的形式为 (param1 type1, param2 type2, …) return_value_list 的形式为 (ret1 type1, ret2 type2, …) 只有当某个函数需要被外部包调用的时候才使用大写字母开头,并遵循 Pascal 命名法;否则就遵循骆驼命名法,即第一个单词的首字母小写,其余单词的首字母大写。 下面这一行调用了 fmt 包中的 Println 函数,可以将字符串输出到控制台,并在最后自动增加换行字符 \n :
fmt.Println("hello, world")
使用 fmt.Print("hello, world\n") 可以得到相同的结果。
Print 和 Println 这两个函数也支持使用变量,如: fmt.Println(arr) 。如果没有特别指定,它们会以默认 的打印格式将变量arr输出到控制台。
单纯地打印一个字符串或变量甚至可以使用预定义的方法来实现,如: print 、 println: print("ABC") 、 println("ABC") 、 println(i) (带一个变量 i)。
这些函数只可以用于调试阶段,在部署程序的时候务必将它们替换成 fmt 中的相关函数。
当被调用函数的代码执行到结束符 } 或返回语句时就会返回,然后程序继续执行调用该函数之后的代码。
程序正常退出的代码为 0 即Program exited with code 0;如果程序因为异常而被终止,则会返回非零值,如:1。 这个数值可以用来测试是否成功执行一个程序。