Image Description

先看一段简单的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