我们使用函数将代码分成更小的块,使代码看起来更整洁,更容易理解。
基本上,函数是一段执行特定任务的代码。例如,假设我们要编写代码来创建一个圆和矩形并为它们着色。
在这种情况下,我们可以通过创建三个不同的函数来组织代码
- 创建圆的函数
- 创建矩形的函数
- 着色函数
这样,我们的代码将看起来更有条理。此外,我们可以重复使用相同的函数来为圆和矩形着色。因此,提供了代码重用的好处。
创建 Go 函数
在 Golang 中,我们使用 func
关键字来创建函数。
func greet(){
// code
}
在这里,greet()
是函数名(由 ()
表示),{....}
中的代码表示函数体。
现在让我们创建一个打印 早上好 的函数。
// Program to define a function
package main
import "fmt"
// define a function
func greet() {
fmt.Println("Good Morning")
}
func main() {
}
当我们运行此程序时,将不会得到输出。
这是因为我们只是在定义一个函数。要执行函数,我们首先需要调用它。
函数调用
我们使用函数名后跟括号来调用函数。
greet()
现在,让我们在 main()
中添加一个函数调用。
// Program to define a function
package main
import "fmt"
// define a function
func greet() {
fmt.Println("Good Morning")
}
func main() {
// function call
greet()
}
输出
Good Morning
这次函数运行了,我们得到了 早上好 作为输出。
示例:Golang 函数
package main
import "fmt"
// function to add two numbers
func addNumbers() {
n1 := 12
n2 := 8
sum := n1 + n2
fmt.Println("Sum:", sum)
}
func main() {
// function call
addNumbers()
}
输出
Sum: 20
在上面的示例中,我们创建了一个名为 addNumbers()
的函数。该函数将两个数字相加并打印它们的和。
程序工作方式如下:

Golang 中的函数参数
在最后一个示例中,我们创建了一个执行单个任务的函数,即相加两个数字 12 和 8。
func addNumbers() {
n1 := 12
n2 := 8
sum := n1 + n2
fmt.Println("Sum:", sum)
}
然而,在实际项目中,我们希望函数能够动态工作。也就是说,addNumbers()
函数不应该只相加 12 和 8,而应该能够相加任意两个数字。
在这种情况下,我们可以创建接受外部值并对其执行操作的函数。这些附加参数称为函数参数。
定义带参数的函数
以下是创建带参数的函数的方法
func addNumbers(n1 int, n2 int) {
// code
}
现在,addNumbers()
函数接受两个参数:n1
和 n2
。这里,int
表示两个参数都是整数类型。
要调用此函数,我们需要传递一些值(称为函数参数)。
// function call
addNumbers(21, 13)
在这里,21 和 13 是传递给 addNumbers()
函数的函数参数。
示例:函数参数
// Program to illustrate function parameters
package main
import "fmt"
// define a function with 2 parameters
func addNumbers(n1 int, n2 int) {
sum := n1 + n2
fmt.Println("Sum:", sum)
}
func main() {
// pass parameters in function call
addNumbers(21, 13)
}
输出
Sum: 34
程序工作方式如下:

调用函数时,参数被赋给函数参数。21
被赋给 n1
,13
被赋给 n2
。
这就是为什么我们在函数内相加 n1
和 n2
时会得到 34 (21 + 13)。
注意: 函数参数的数据类型应始终与函数调用期间传递的数据匹配。这里,n1 和 n2 的数据类型是 int
,因此我们在函数调用中传递了整数值 21 和 13。
从 Go 函数返回值
在最后一个示例中,我们在函数本身内部打印了和的值。但是,我们也可以从函数返回值并在程序中的任何位置使用它。
以下是创建返回值的 Go 函数的方法
func addNumbers(n1 int, n2 int) int {
// code
return sum
}
在这里,开头的花括号 {
之前的 int
表示函数的返回类型。在这种情况下,int
表示函数将返回一个整数值。
而 return sum
是返回 sum
变量值的 return 语句。
函数将值返回到调用它的地方,因此我们需要将返回值存储到一个变量中。
// function call
result := addNumbers(21, 13)
在这里,我们将返回值存储到 result
变量中。
示例:函数返回值
package main
import "fmt"
// function definition
func addNumbers(n1 int, n2 int) int {
sum := n1 + n2
return sum
}
func main() {
// function call
result := addNumbers(21, 13)
fmt.Println("Sum:",result)
}
输出
Sum: 34
在上面的示例中,当遇到 return
语句时,它会返回 sum 的值。返回值被赋给 main()
中的 result 变量。
程序的工作原理如下:

return
语句应该是函数中的最后一条语句。遇到 return 语句时,函数终止。
让我们看一个例子,
package main
import "fmt"
// function definition
func addNumbers(n1 int, n2 int) int {
sum := n1 + n2
return sum
// code after return statement
fmt.Println("After return statement")
}
func main() {
// function call
result := addNumbers(21, 13)
fmt.Println("Sum:",result)
}
由于我们在 return 语句之后添加了一行,因此会收到“函数末尾缺少 return”的错误。
从 Go 函数返回多个值
在 Go 中,我们还可以从函数返回多个值。例如,
// Program to return multiple values from function
package main
import "fmt"
// function definition
func calculate(n1 int, n2 int) (int, int) {
sum := n1 + n2
difference := n1 - n2
// return two values
return sum, difference
}
func main() {
// function call
sum, difference := calculate(21, 13)
fmt.Println("Sum:", sum, "Difference:", difference)
}
输出
Sum: 34 Difference: 8
在上面的示例中,我们创建了一个名为 calculate()
的函数。
func calculate(n1 int, n2 int) (int, int) {
...
}
这里,(int, int)
表示我们从函数返回两个整数值:sum 和 difference。
由于函数返回两个值,我们在调用函数时使用了两个变量。
sum, difference = calculate(21, 13);
使用函数的好处
以下是编程中使用函数的好处
1. 代码可重用性
我们可以在程序中多次重用相同的函数。例如,
// Program to illustrate code reusability in function
package main
import "fmt"
// function definition
func getSquare(num int) {
square := num * num
fmt.Printf("Square of %d is %d\n", num, square)
}
// main function
func main() {
// call function 3 times
getSquare(3)
getSquare(5)
getSquare(10)
}
输出
Square of 3 is 9 Square of 5 is 25 Square of 10 is 100
在上面的程序中,我们创建了一个名为 getSquare()
的函数来计算数字的平方。
在这里,我们多次重用相同的函数来计算不同数字的平方。
2. 代码可读性
函数帮助我们将代码分成块,使我们的程序更易读、更易于理解。它还使代码更容易维护和调试。