Go 函数

我们使用函数将代码分成更小的块,使代码看起来更整洁,更容易理解。

基本上,函数是一段执行特定任务的代码。例如,假设我们要编写代码来创建一个圆和矩形并为它们着色。

在这种情况下,我们可以通过创建三个不同的函数来组织代码

  • 创建圆的函数
  • 创建矩形的函数
  • 着色函数

这样,我们的代码将看起来更有条理。此外,我们可以重复使用相同的函数来为圆和矩形着色。因此,提供了代码重用的好处。


创建 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() 的函数。该函数将两个数字相加并打印它们的和。

程序工作方式如下:

To run a function, we need to call the function.
Go 中函数的工作原理

Golang 中的函数参数

在最后一个示例中,我们创建了一个执行单个任务的函数,即相加两个数字 128

func addNumbers() {
  n1 := 12
  n2 := 8
  sum := n1 + n2
  fmt.Println("Sum:", sum)
}

然而,在实际项目中,我们希望函数能够动态工作。也就是说,addNumbers() 函数不应该只相加 128,而应该能够相加任意两个数字。

在这种情况下,我们可以创建接受外部值并对其执行操作的函数。这些附加参数称为函数参数。

定义带参数的函数

以下是创建带参数的函数的方法

func addNumbers(n1 int, n2 int) {
  // code
}

现在,addNumbers() 函数接受两个参数:n1n2。这里,int 表示两个参数都是整数类型。

要调用此函数,我们需要传递一些值(称为函数参数)。

// function call
addNumbers(21, 13)

在这里,2113 是传递给 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

程序工作方式如下:

To pass values in the function, we use parameters.
带参数的函数的工作原理

调用函数时,参数被赋给函数参数。21 被赋给 n113 被赋给 n2

这就是为什么我们在函数内相加 n1n2 时会得到 34 (21 + 13)

注意: 函数参数的数据类型应始终与函数调用期间传递的数据匹配。这里,n1n2 的数据类型是 int,因此我们在函数调用中传递了整数值 2113


从 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 statement returns the value when encountered.
带返回值的 Go 函数的工作原理

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) 表示我们从函数返回两个整数值:sumdifference

由于函数返回两个值,我们在调用函数时使用了两个变量。

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. 代码可读性

函数帮助我们将代码分成块,使我们的程序更易读、更易于理解。它还使代码更容易维护和调试。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战