Go 语言中的函数

本文来介绍 Go 语言中的函数。Go 语言的函数和其它语言的用法类似,但是 Go 语言中所有东西都是变量,包括函数,函数在 Go 语言中也是变量的一种,所以函数名的命名规则和变量名相同,同时这个和我们后面要讲解的函数式编程有关,目前本文仅介绍 Go 语言中函数的声明使用

 

1. 函数的定义和使用

Go 语言中,通过 func 关键字来声明和定义函数。Go 语言和 C 语言不同,Go 语言函数的声明和定义是一起的,不存在先声明在定义,且声明时不分前后均可互相调用

代码示例

代码块
  • package main
  • 2
  • import "fmt"
  • 4
  • func print(s string) {
  • 6        fmt.Println(s)
  • }
  • 8
  • func main() {
  • 10        print("Hello Codey !")
  • 11
  • 12  }
  • 第 5 行:声明并定义一个名叫 print 的函数,函数接收一个 string 类型的参数;
  • 第 6 行:函数体。一个输出接收进来参数的值的语句;
  • 第 9 行:声明并定义了一个叫main的函数。Go 语言中程序的入口就时 main 函数,所有的程序都以main 函数作为入口;
  • 第 10 行:调用 print 函数,传入参数"Hello Codey !"。

执行结果

图片描述

 

2. 函数的返回值

Go 语言的函数的返回值也有些特殊,它可以一次返回**多个返回值,**Go 语言中如果是单返回值,可以直接在函数声明的括号后面增加数据类型,代码示例如下:

代码块
  • func Sum(a, b int) int //声明并定义一个返回值为int数据类型的函数

若要返回多个返回值,则需要用括号包裹返回值,并使用,隔开所有返回值,代码示例如下:

代码块
  • func Sum(a, b int) (int,string) //声明并定义一个返回值为int和string数据类型的函数

返回的方式有两种。一种是用 return 关键字加返回值直接返回,一种是声明返回值变量,使用返回值变量直接返回。

 

2.1 使用 return+ 返回值返回

和其它语言不同的是,Go 语言可以一次返回多个值,多个值直接跟在 return 关键字之后,使用,隔开即可。

代码示例

代码块
  • package main
  • 2
  • 3  import "fmt"
  • 4
  • func SumAndProduct(a, b int) (int, int) {
  • 6          c := a + b
  • 7          d := a * b
  • 8          return c, d //同时返回c和d两个变量
  • }
  • 10
  • 11  func main() {
  • 12          sum, product := SumAndProduct(1, 2) //接收多返回值的函数时,也需要用逗号隔开变量
  • 13          fmt.Println("a + b =", sum)
  • 14          fmt.Println("a * b =", product)
  • 15  }

执行结果

图片描述

 

2.2 使用返回值变量返回

Go 语言还能直接在返回值处声明变量,这个变量的作用域是整个函数,并且会在 return 的时候直接返回。

代码示例

代码块
  • package main
  • 2
  • import "fmt"
  • 4
  • func SumAndProduct(a, b int) (c int, d int) {
  • 6          c = a + b //因为c和d函数返回值处已经定义了,可以直接使用
  • 7          d = a * b
  • 8          return //直接返回,c和d自动传出去
  • }
  • 10
  • 11  func main() {
  • 12          sum, product := SumAndProduct(1, 2) //接收多返回值的函数时,也需要用逗号隔开变量
  • 13          fmt.Println("a + b =", sum)
  • 14          fmt.Println("a * b =", product)
  • 15  }

执行结果

图片描述

 

3. 小结

本文主要介绍了 Go 语言中函数的定义和使用。主要就是和其它语言比起来,Go 语言的函数更加强大,能够多参数返回,返回值更是能直接写做变量,且作用域为整个函数。

文章来源于网络,侵删!

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!