跳转至

函数


更新于 2021-08-30

关键字

关键字 作用
func 声明函数
return

函数定义

  • fun:关键字fun定义函数
  • name:函数名
  • parameters:函数参数,可以有0个或多个
  • results:函数返回值,可以有0个或多个
Go
1
2
3
func name(parameters) (results) {
    body-content
}
Go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main

import (
    "os"
    "strconv"
)

func main() {
    sum := sum(os.Args[1], os.Args[2])
    println("Sum:", sum)
}

func sum(number1 string, number2 string) int {
    int1, _ := strconv.Atoi(number1)
    int2, _ := strconv.Atoi(number2)
    return int1 + int2
}
//或者另一种形式
func sum(number1 string, number2 string) (result int) {
    int1, _ := strconv.Atoi(number1)
    int2, _ := strconv.Atoi(number2)
    result = int1 + int2
    return
}

多返回值

Go
1
2
3
4
5
6
7
func calc(number1 string, number2 string) (sum int, mul int) {
    int1, _ := strconv.Atoi(number1)
    int2, _ := strconv.Atoi(number2)
    sum = int1 + int2
    mul = int1 * int2
    return
}
如果不需要函数的某个返回值,可是用匿名变量_
Go
1
2
3
4
func main() {
    sum, _ := calc(os.Args[1], os.Args[2])
    println("Sum:", sum)
}

不定长参数

Go
1
2
3
4
5
func test(args ...int) {
    for _, arg : rangd args {
        fmt.Println(arg)
    }
}

匿名函数

func关键字后函数名
此类函数可以获取外层函数里的变量

函数变量

Go
1
2
3
4
5
func test(a int) int{ //do something}
new_f := test

//定义函数变量
var f func() int

main函数

  • 程序中只能有一个main函数
  • 如果是Go包,则无需编写main函数
  • main函数没有参数(使用os包获取参数)
  • main函数没有返回值
Go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
package main

import (
    "os"
    "strconv"
)

func main() {
    number1, _ := strconv.Atoi(os.Args[1])
    number2, _ := strconv.Atoi(os.Args[2])
    println("Sum:", number1+number2)
}

内置函数

函数名
make
len
cap
new
append
copy
close
delete
complex
real
image
panic
recover