先看一段简单的Go代码
package main
import (
"fmt"
"math/rand"
)
func add(x int, y int){
return x + y
}
func main() {
fmt.Println("My favorite number is", rand,Intn (10))
fmt.Println(add(42, 13))
}
每个 Go程序都是由包 ( package ) 组成的,程序运行的入口是 package main,import 作用是导入包。
函数定义
函数是基本的代码块,用来执行一个任务。Go 语言中的函数定义格式如下:
func function_name([parameter list]) [return_types] {
函数体
}
func 表示函数由 func开始声明,后面跟着函数名称,括号里面是这个函数接受的参数列表,它们一起构成了函数签名。
参数列表,参数就像一个占位符,当我们调用这个函数时,要把值传给参数,这样才能正确使用这个函数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,Go 的函数可以不包含参数。
方法名和参数列表之后,是这个函数的返回值,函数在接收传入的参数,经过内部相应的运算后,会返回相应的一个结果,这就是返回值。
return_types 是函数返回值的数据类型,有些函数也不需要返回值。返回值后面两个中括号内的是函数体,是函数定义代码的合集。
代码示例
add 接收了两个 int 类型的参数 x 和 y,这里先定义变量名,后定义变量类型。
func add(x int, y int) int {
return x + y
}
Go 函数可以返回任意数量的返回值,上面代码返回了一个 int类型返回值。返回两个返回值可以写成这样 func add (x int, y int) (int, int) {}。 还可以给函数的返回值命名,像变量那样使用,
代码示例
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
这里的两个返回值 x 和 y,分别代表 sum * 4 / 9 和 sum - x。也就是说,函数 split的返回值是两个函数,一个函数调用后返回了另外两个函数,这就是 Go 函数的返回值。
函数调用
创建完函数之后,我们定义了函数需要去做什么事。接下来就要通过调用函数来执行具体的任务。下面举例来调用函数,向函数传递参数,并返回值:
package main
import (
"fmt"
"math/rand"
)
func max(num1, num2 int) int {
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
func main() {
var a int = 100
var b int = 200
var ret int
ret = max(a, b)
fmt.Printf("最大值是 : %d\n", ret)
}
以上实例在 main() 函数中调用 max()函数,执行结果为:
200