「函数」
函数是将能够完成一定的功能的语句的包装集合,供外部调用。
📜本文内容
🐵函数结构
包含函数名,参数和返回值三个部分,其中,参数及返回值可缺省
1
2
3
|
func 函数名( 参数1, 参数2, 参数3, ...) (返回值类型1, 返回值类型2, 返回值类型3){
}
|
🐒参数及返回值缺省
1
2
3
|
func HelloWorld(){
fmt.Println("Hello World!")
}
|
🐒参数缺省
1
2
3
4
|
// 单返回值
func HelloWorld() string {
return "Hello World!"
}
|
🐒返回值缺省
1
2
3
|
func HelloWorld(hello string) {
fmt.Println(hello)
}
|
🐒多返回值
1
2
3
4
5
6
7
8
9
10
11
|
func HelloWorld() (string, bool){
return "Hello World!", true
}
// 命名返回值
// user及age均被初始化为默认值
func HelloWorld() (user string, age int){
user = "heihei"
age = 10
return
}
|
🐒多参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// 参数个数确定
func Sum(num1,num2,num3 int) int{
return num1 + num2 + num3
}
// 参数个数不确定,利用for range遍历参数
func Sum(nums ...int) int{
sum := 0
for _, value = range nums{
sum += value
}
return sum
}
|
🐒参数为引用类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package main
import "fmt"
func main() {
var a,b,c int
a = 1
b = 2
c = 3
fmt.Println(Sum(&a,&b,&c))
}
//传入的参数为指针变量
func Sum(num1,num2,num3 *int) int{
return *num1 + *num2 + *num3
}
|
🐵函数回调
函数回调就是函数作为其他函数的参数,在其他函数内调用执行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package main
import "fmt"
func main() {
ss := "golang"
ss1 := "world"
sayhello(ss, ss1, appenStr)
}
func appenStr(prefix, name, suffix string) {
fmt.Println(prefix, name , suffix)
}
func sayhello(name, suffix string, f func (string, string, string)) {
f ("hello", name, suffix)
}
|
🐵匿名函数
📎匿名函数是不需要定义函数名称的函数实现方式,例如下面这个函数就是一个匿名函数
1
2
3
|
func(num1, num2 int) int{
return num1 + num2
}
|
📎可以将匿名函数引用给其他变量,也可以把匿名函数设为其他函数的返回值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package main
import "fmt"
func main() {
var a,b,c int
a = 9
b = 2
c = 1
f := Anonymous(a,b)
fmt.Println(f(c))
}
func Anonymous(num1, num2 int) (func(int) int){
r := func(num3 int) int{
return (num1 + num2 - num3)
}
return r
}
|
以上程序完成 num1 + num2 - num3 = 9 + 2 -1 = 10
📎匿名函数的传参
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package main
import "fmt"
func main() {
ss := "hello world!"
func(hello string){
fmt.Println(hello)
}(ss)
// 后面的括号中的ss作为参数传到匿名函数中
}
|
🐵闭包
闭包能够读取其他函数内部变量的函数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package main
import "fmt"
func main() {
ss := "world"
hello(ss)
}
func hello(ss string) {
text := "hello" + " " + ss
f := func () {
fmt.Println(text)
}
f()
}
|