📜  Go-函数

📅  最后修改于: 2020-11-04 08:03:52             🧑  作者: Mango


 

函数是一起执行任务的一组语句。每个Go程序至少都有一个函数,即main() 。您可以将代码分成单独的函数。如何在不同功能之间划分代码由您决定,但是从逻辑上讲,划分应该使每个函数执行特定任务。

函数声明告诉编译器函数名称,返回类型和参数。函数定义提供了函数的实际身体。

Go标准库提供了许多内置函数,您的程序可以调用这些函数。例如,函数len()接受各种类型的参数并返回该类型的长度。如果将字符串传递给该字符串,则该函数以字节为单位返回字符串的长度。如果将数组传递给它,该函数将返回数组的长度。

函数也称为方法,子例程过程

定义功能

Go编程语言中的函数定义的一般形式如下-

func function_name( [parameter list] ) [return_types]
{
   body of the function
}

Go编程语言中的函数定义由函数头函数体组成。这是函数的所有部分-

  • Func-开始函数的声明。
  • 功能名称-这是函数的实际名称。函数名称和参数列表共同构成函数签名。
  • 参数-参数就像一个占位符。调用函数,将一个值传递给参数。此值称为实际参数或自变量。参数列表是指类型,顺序和数量的函数的参数。参数是可选的;也就是说,一个函数可能不包含任何参数。
  • 返回类型-函数可以返回值列表。 return_types是函数返回的值的数据类型的列表。某些函数执行所需的操作而不返回值。在这种情况下,不需要return_type。
  • 函数体-它包含定义函数的语句的集合。

以下源代码显示了一个名为max()的函数。此函数采用两个参数num1和num2,并返回两个参数之间的最大值-

/* function returning the max between two numbers */
func max(num1, num2 int) int {
   /* local variable declaration */
   result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result 
}

调用函数

在创建Go函数,您可以定义函数。要使用一个函数,您将必须调用该函数来执行定义的任务。

当程序调用函数,程序控制权将转移到被调用函数。被调用函数执行已定义的任务,并且在执行其return语句或达到其函数结尾的右括号时,它将程序控制权返回给主程序。

要调用一个函数,您只需要传递所需的参数及其函数名。如果函数返回一个值,则可以存储返回的值。例如-

package main

import "fmt"

func main() {
   /* local variable definition */
   var a int = 100
   var b int = 200
   var ret int

   /* calling a function to get max value */
   ret = max(a, b)

   fmt.Printf( "Max value is : %d\n", ret )
}

/* function returning the max between two numbers */
func max(num1, num2 int) int {
   /* local variable declaration */
   var result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result 
}

我们保留了max()函数和main()函数,并编译了源代码。在运行最终可执行文件时,它将产生以下结果-

Max value is : 200

从函数返回多个值

Go函数可以返回多个值。例如-

package main

import "fmt"

func swap(x, y string) (string, string) {
   return y, x
}
func main() {
   a, b := swap("Mahesh", "Kumar")
   fmt.Println(a, b)
}

编译并执行上述代码后,将产生以下结果-

Kumar Mahesh

功能参数

如果函数要使用参数,则它必须声明接受参数值的变量。这些变量称为函数的形式参数

形式参数的行为类似于函数内部的其他局部变量,并在进入函数创建并在退出时销毁。

调用函数,可以通过两种方式将参数传递给函数-

Sr.No Call Type & Description
1 Call by valueThis method copies the actual value of an argument into the formal parameter of the function. In this case, changes made to the parameter inside the function have no effect on the argument.
2 Call by referenceThis method copies the address of an argument into the formal parameter. Inside the function, the address is used to access the actual argument used in the call. This means that changes made to the parameter affect the argument.

默认情况下,Go使用按值调用来传递参数。通常,这意味着函数的代码无法更改用于调用函数的参数。上面的程序在调用max()函数,使用了相同的方法。

功能用法

可以通过以下方式使用函数:

Sr.No Function Usage & Description
1 Function as ValueFunctions can be created on the fly and can be used as values.
2 Function ClosuresFunctions closures are anonymous functions and can be used in dynamic programming.
3 MethodMethods are special functions with a receiver.