目录
- 01定义和调用函数
- 1. 函数的参数
- 2. 函数的返回值
- 3. 函数的变参
- 4. 匿名函数
Golang是一种支持函数式编程的语言,它的函数具有以下特点:
-
函数是一等公民:函数可以作为参数传递给其他函数,也可以作为返回值返回给调用者。
-
支持多返回值:函数可以返回多个值,这些值可以是不同类型的。
-
支持匿名函数:Golang支持定义匿名函数,这些函数可以像普通函数一样被调用。
01定义和调用函数
下面是一个简单的示例代码,展示了如何在Golang中定义和调用函数:
package mainimport "fmt"// 定义一个名为add的函数,接收两个整数类型的参数,返回它们的和
func add(a, b int) int {return a + b
}func main() {// 调用add函数,并将返回值赋值给变量sumsum := add(1, 2)// 输出sum的值fmt.Println(sum)
}
代码解释:
-
第1行定义了一个名为main的包,这是Golang程序的入口点。
-
第3行导入了fmt包,该包提供了格式化输入输出的功能。
-
第5行定义了一个名为add的函数,它接收两个整数类型的参数a和b,返回它们的和。
-
第9行开始执行main函数,调用add函数并将返回值赋值给变量sum。
-
第11行输出sum的值。
接下来,我们将进一步探讨Golang中函数的相关知识点。
1. 函数的参数
函数的参数可以是任意类型,包括基本类型、结构体、数组、切片、映射、函数等。在Golang中,函数的参数可以有多个,它们之间用逗号分隔。
示例代码:
package mainimport "fmt"// 定义一个名为add的函数,接收两个整数类型的参数,返回它们的和
func add(a, b int) int {return a + b
}// 定义一个名为printPerson的函数,接收一个结构体类型的参数,输出该结构体的信息
func printPerson(person struct {name stringage int
}) {fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}func main() {// 调用add函数,并将返回值赋值给变量sumsum := add(1, 2)// 输出sum的值fmt.Println(sum)// 定义一个名为p的结构体变量p := struct {name stringage int}{name: "Tom",age: 20,}// 调用printPerson函数,输出p的信息printPerson(p)
}
代码解释:
-
第5行定义了一个名为add的函数,它接收两个整数类型的参数a和b,返回它们的和。
-
第8行定义了一个名为printPerson的函数,它接收一个结构体类型的参数person,输出该结构体的信息。
-
第22行定义了一个名为p的结构体变量。
-
第25行调用printPerson函数,将p作为参数传入。
2. 函数的返回值
函数可以返回一个或多个值,这些值可以是不同类型的。在Golang中,函数的返回值可以在函数定义时指定,也可以在函数体中使用return语句返回。
示例代码:
package mainimport "fmt"// 定义一个名为swap的函数,接收两个整数类型的参数,返回它们的值交换后的结果
func swap(a, b int) (int, int) {return b, a
}func main() {// 调用swap函数,并将返回值赋值给变量x和yx, y := swap(1, 2)// 输出x和y的值fmt.Println(x, y)
}
代码解释:
-
第5行定义了一个名为swap的函数,它接收两个整数类型的参数a和b,返回它们的值交换后的结果。
-
第9行开始执行main函数,调用swap函数并将返回值分别赋值给变量x和y。
-
第11行输出x和y的值。
3. 函数的变参
Golang中的函数可以接收变长参数,这些参数的数量可以是任意的。在函数定义时,可以使用…语法来表示变长参数。
示例代码:
package mainimport "fmt"// 定义一个名为sum的函数,接收任意数量的整数类型参数,返回它们的和
func sum(nums ...int) int {total := 0for _, num := range nums {total += num}return total
}func main() {// 调用sum函数,传入任意数量的参数fmt.Println(sum(1, 2, 3, 4, 5))fmt.Println(sum(1, 2, 3))fmt.Println(sum(1, 2))fmt.Println(sum(1))fmt.Println(sum())
}
代码解释:
-
第5行定义了一个名为sum的函数,它接收任意数量的整数类型参数nums,返回它们的和。
-
第9-12行使用for循环遍历nums中的每个元素,并将它们累加到变量total中。
-
第14行开始执行main函数,分别调用sum函数,传入不同数量的参数,并输出它们的和。
-
第15-19行分别输出不同数量参数的和。
4. 匿名函数
Golang支持定义匿名函数,这些函数可以像普通函数一样被调用。匿名函数可以作为参数传递给其他函数,也可以作为返回值返回给调用者。
示例代码:
package mainimport "fmt"func main() {// 定义一个匿名函数,并将它赋值给变量ff := func(a, b int) int {return a + b}// 调用匿名函数,并将返回值赋值给变量sumsum := f(1, 2)// 输出sum的值fmt.Println(sum)
}
代码解释:
-
第6行定义了一个匿名函数,并将它赋值给变量f。
-
第9行调用匿名函数,并将返回值赋值给变量sum。
-
第11行输出sum的值。
以上就是Golang中函数相关知识的简单介绍和示例代码,希望对您有所帮助。