Go语言介绍(十一)--Go 语言函数

目录

函数定义

基本格式

示例

函数参数

示例

返回值

示例:多返回值

可变参数列表

示例:可变参数列表

闭包

示例:闭包

匿名函数

示例:匿名函数

延迟执行(defer)

示例:延迟执行

错误处理

示例:错误处理


Go 语言中的函数是执行特定任务的基本构建块。函数可以接收输入参数,并返回一个或多个结果。函数可以是包级别的(顶级函数),也可以是局部的(在其他函数内部定义)。下面详细介绍 Go 语言中的函数定义、调用、多返回值、可变参数列表等功能。

函数定义

函数使用 func 关键字定义,后面跟函数名、参数列表和返回值类型。

基本格式

 

go

深色版本

1func functionName(parameters) (returnValues) {
2    // 函数体
3}

示例

 

go

深色版本

1package main
2
3import "fmt"
4
5// 定义一个函数,接受两个 int 参数,返回一个 int
6func add(x int, y int) int {
7    return x + y
8}
9
10func main() {
11    sum := add(10, 20)
12    fmt.Println(sum) // 输出 30
13}

函数参数

函数可以接受任意数量的参数,每个参数都有一个类型和名称。

示例

 

go

深色版本

1func greet(name string, age int) {
2    fmt.Printf("Hello, %s! You are %d years old.\n", name, age)
3}
4
5func main() {
6    greet("Alice", 30) // 输出 Hello, Alice! You are 30 years old.
7}

返回值

函数可以返回一个或多个值。如果没有返回值,可以省略括号中的返回值部分。

示例:多返回值

 

go

深色版本

1func divide(dividend int, divisor int) (int, error) {
2    if divisor == 0 {
3        return 0, fmt.Errorf("cannot divide by zero")
4    }
5    return dividend / divisor, nil
6}
7
8func main() {
9    result, err := divide(100, 5)
10    if err != nil {
11        fmt.Println(err)
12    } else {
13        fmt.Println(result) // 输出 20
14    }
15}

可变参数列表

使用 ... 符号可以定义一个接收可变数量参数的函数。这些参数会被收集到一个切片中。

示例:可变参数列表

 

go

深色版本

1func sum(numbers ...int) int {
2    total := 0
3    for _, number := range numbers {
4        total += number
5    }
6    return total
7}
8
9func main() {
10    fmt.Println(sum(1, 2, 3, 4, 5)) // 输出 15
11}

闭包

闭包是一个函数,它可以访问其词法作用域中的变量。在 Go 中,闭包可以非常方便地定义。

示例:闭包

 

go

深色版本

1func counter() func() int {
2    count := 0
3    return func() int {
4        count++
5        return count
6    }
7}
8
9func main() {
10    nextCount := counter()
11    fmt.Println(nextCount()) // 输出 1
12    fmt.Println(nextCount()) // 输出 2
13}

匿名函数

可以在定义时立即调用的函数称为匿名函数。匿名函数可以在任何地方定义,并且可以赋值给一个变量。

示例:匿名函数

 

go

深色版本

1func main() {
2    add := func(x, y int) int {
3        return x + y
4    }
5
6    fmt.Println(add(10, 20)) // 输出 30
7}

延迟执行(defer)

defer 语句可以延迟一个函数的执行,直到其所在函数即将返回之前执行。

示例:延迟执行

 

go

深色版本

1func main() {
2    defer fmt.Println("世界") // 这句话会在最后打印出来
3
4    fmt.Println("你好")
5}
6
7// 输出:你好
8//       世界

错误处理

在 Go 中,通常使用 (value, error) 的形式来处理错误,其中 error 类型是一个标准接口,表示一个错误。

示例:错误处理

 

go

深色版本

1func readFile(filename string) (string, error) {
2    // 假设这个函数是从文件中读取内容
3    // 返回内容字符串和错误
4    return "", nil
5}
6
7func main() {
8    content, err := readFile("example.txt")
9    if err != nil {
10        fmt.Println("读取文件失败:", err)
11    } else {
12        fmt.Println(content)
13    }
14}

以上就是 Go 语言中函数的基本介绍。函数是 Go 语言中非常重要的组成部分,掌握函数的定义、调用和相关特性对于编写 Go 程序至关重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蘑菇二号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值