服务端相关 / 22 Go 语言中的函数

Go 语言中的函数

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

1. 函数的定义和使用

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

代码示例

package main

import "fmt"

func print(s string) {
    fmt.Println(s)
}

func main() {
    print("Hello Codey !")

}
  • 第 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

import "fmt"

func SumAndProduct(a, b int) (int, int) {
    c := a + b
    d := a * b
    return c, d //同时返回c和d两个变量
}

func main() {
    sum, product := SumAndProduct(1, 2) //接收多返回值的函数时,也需要用逗号隔开变量
    fmt.Println("a + b =", sum)
    fmt.Println("a * b =", product)
}

执行结果

图片描述

2.2 使用返回值变量返回

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

代码示例

package main

import "fmt"

func SumAndProduct(a, b int) (c int, d int) {
    c = a + b //因为c和d函数返回值处已经定义了,可以直接使用
    d = a * b
    return //直接返回,c和d自动传出去
}

func main() {
    sum, product := SumAndProduct(1, 2) //接收多返回值的函数时,也需要用逗号隔开变量
    fmt.Println("a + b =", sum)
    fmt.Println("a * b =", product)
}

执行结果

图片描述

3. 小结

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