Golang - 声明函数

路漫漫其修远兮,吾将上下而求索。

声明函数

声明函数以关键字 func 开头:

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import (
	"fmt"
)

func sayHi(){
	fmt.Println("Hi!")
}

func main() {
	sayHi()
}

上述示例中”sayHi”代表函数名,”{“代表函数块的开始,”}”代表函数块的结束,”fmt.Println(“Hi!”)”代表函数体。

函数名的定义遵循一下规则:

  • 名称必须以字母开头,后跟任何数量的附加字母和数字。

  • 名称以大写字母开头的函数是可导出的,并且可以在当前包之外使用。如果只需要在当前包中使用函数,则应该以小写字母开头。

声明函数参数

如果希望对函数的调用包含参数,则需要声明一个或多个参数。参数是函数的局部变量,其值是在调用函数时设置的。

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import (
	"fmt"
)

func sayHi(content string){
	fmt.Println(content)
}

func main() {
	sayHi("Hi!")
}

如果函数定义了参数,那么在调用它时需要传递一组匹配的参数。当函数运行时,每个参数都将被设置为对应参数中值的副本。然后这些参数值在函数块的代码中被使用。在函数体中对传入参数进行修改并不会影响函数体外的参数值。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main

import (
	"fmt"
)

func sayHi(content string){
	content = "Hi!"
	fmt.Println(content)
}

func main() {
	content := "Hello!"
	sayHi(content)
	fmt.Println(content)
}

输出:

1
2
Hi!
Hello!

函数返回值

给函数定义一个返回值类型,函数体中就可以使用 return 关键字进行返回。当 return 执行后函数会立即退出。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main

import (
	"fmt"
)

func sayHi(content string) string {
	content = "Hi!"
	fmt.Println(content)
	return content
}

func main() {
	content := "Hello!"
	content = sayHi(content)
	fmt.Println(content)
}

输出:

1
2
Hi!
Hi!

函数多个返回值

当一个函数有多个返回值时,需要使用括号将多个返回值类型括起来。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main

import (
	"fmt"
)

func sayHi() (string, string, int) {
	return "Hi!", "Martin", 520
}

func main() {
	content, name, number := sayHi()
	fmt.Println("content = ", content)
	fmt.Println("name = ", name)
	fmt.Println("number = ", number)
}

输出:

1
2
3
content =  Hi!
name =  Martin
number =  520