Go - 函数类型

Go - 函数类型 首页 / Golang入门教程 / Go - 函数类型

函数也称为方法,每个Go程序至少都有一个函数,即 main(),您可以将代码分成单独的函数,Go标准库提供了程序可以调用的许多内置函数

定义函数

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

链接:https://www.learnfk.comhttps://www.learnfk.com/go/go-functions.html

来源:LearnFk无涯教程网

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

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

  • Func                      - 声明函数。

  • function_name   - 函数名称。

  • parameter            -  函数参数。

  • return_types       - 函数可以返回值列表。

  • body                      - 函数方法实现区。

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

/* 返回两个数字之间的最大值的函数 */
func max(num1, num2 int) int {
   /* 局部变量声明 */
   result int

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

调用函数

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

package main

import "fmt"

func main() {
   /* 局部变量定义 */
   var a int=100
   var b int=200
   var ret int

   /* 调用函数以获取最大值 */
   ret=max(a, b)

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

/* 返回两个数字之间的最大值的函数 */
func max(num1, num2 int) int {
   /* 局部变量声明 */
   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.NoCall Type & 描述
1 Call by value

此方法将参数的实际值复制到函数的形式参数中。在这种情况下,对函数内部参数的更改不会对参数产生影响。

2 Call by reference

此方法将参数的地址复制到形式参数中。这意味着对参数所做的更改会影响参数。

默认情况下,Go使用按值调用来传递参数,通常,这意味着函数中的代码无法更改用于调用函数的参数。

函数用法

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

Sr.No函数用法
1 Function as Value

函数可以即时创建,并且可以用作值。

2 Function Closures

函数闭包是匿名函数,可以在动态编程中使用。

3 Method

方法是带有reader的特殊函数。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

透视HTTP协议 -〔罗剑锋(Chrono)〕

玩转webpack -〔程柳锋〕

Flutter核心技术与实战 -〔陈航〕

SRE实战手册 -〔赵成〕

实用密码学 -〔范学雷〕

说透元宇宙 -〔方军〕

计算机基础实战课 -〔彭东〕

超级访谈:对话毕玄 -〔毕玄〕

B端产品经理入门课 -〔董小圣〕

好记忆不如烂笔头。留下您的足迹吧 :)