Go语言函数怎么定义与使用

发布时间:2022-11-03 10:18:45 作者:iii
来源:亿速云 阅读:118

今天小编给大家分享一下Go语言函数怎么定义与使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1.前言

函数是一段代码的片段,包含连续的执行语句,它可以将零个或多个输入参数映射到零个或多个参数输出。函数像一个黑盒,对它的使用者隐藏实现细节。还可以在代码中通过函数调用来执行它们。

学到现在,我们使用的 Go 函数只有 main 函数:

func main() {
}

2.函数声明

每个函数都包含 func 关键字、函数名、输入参数列表、一个可选的返回列表以及函数体

func name(parameter-list) (result-list) {
    function body
}

2.1 函数例子

接下来,看一个简单的 Go 整数计算器的 加、减、乘、除 函数的例子。

package main

import "fmt"

func add(num1 int, num2 int) (num3 int) {
    num3 = num1 + num2
    return
}

func subtract(num1 int, num2 int) int {

    num3 := num1 - num2
    return num3
}

func multiply(num1 int, num2 int) int {
    result := num1 * num2
    return result
}

func divide(num1 int, num2 int) (result int) {
    if num2 != 0 {
        result = num1 / num2
    } else {
        panic("division by zero")
    }
    return result
}

func main() {

    fmt.Printf("2021 + 19 = %d\n", add(2021, 19))
    fmt.Printf("2021 - 19 = %d\n", subtract(2021, 19))
    fmt.Printf("2021 * 19 = %d\n", multiply(2021, 19))
    fmt.Printf("2021 / 19 = %d\n", divide(2021, 19))
    // fmt.Printf("2021 / 0 = %d\n", divide(2021, 0))
}

结果为:

2021 + 19 = 2040
2021 - 19 = 2002
2021 * 19 = 38399
2021 / 19 = 106

如果我们除以 0 的话,调用了一个叫做 panic 的内置函数,该函数会导致一个运行时的错误。还会得到一个异常,异常也会在接下来的博客中学习到。

panic: division by zero

goroutine 1 [running]:
main.divide(...)
...

2.2 Go 函数支持多返回值

Go 支持一个函数返回多个值:

func f() (int, int){
    return 2014, 2021
}

func main() {
    x, y := f()
}

这里需要做三个改变:

多个返回值一般用于返回 error,例如 (x, err := f()) , 或者返回一个布尔值表示成功,如 (x, ok := f()) .

2.3 变量函数

对于 Go 函数中的最后一个参数,有一种特殊的形式可以使用:

func add(args ...int) int {
    total := 0
    for _, v := range args {
        total += v
    }
    return total
}

func main() {
    fmt.Println(add(1,2,3))
}

通过在最后一个参数的类型名称前使用 ... ,你可以表示它需要零个或多个这些 参数。在这种情况下,我们需要零个或多个整数。我们像其他函数一样调用该函数,而且可以传递我们想要的任何数量的变量。

这正是 fmt.Println 函数的实现方式:

func Println(a ...interface{}) (n int, err error)

Println() 函数可以接受任何数量的任何类型的值。我们也可以通过在 slice 后面加上 ... 来传递一个 ints 的 slice 。

func main() {
    s1 := []int{1,2,3}
    fmt.Println(add(s1...))
}

2.4 闭包

可以在函数内部创建函数。

func main() {
    add := func(x, y int) int {
        return x + y
    }
    fmt.Println(add(1,1))
}

add 是一个局部变量,其类型为 func(int, int) int(一个函数接收两个 int 参数,并返回一个 int 参数)。当你创建一个像这样的局部函数时,它还可以访问其他局部变量。

2.5 递归

最后,一个函数能够调用自己。下面是一种方法来计算一个数字的阶乘。

package main

import "fmt"

func factorial(x uint) uint {
    if x == 0 {
        return 1
    }

    return x * factorial(x-1)
}

func main() {
    fmt.Println(factorial(4))
}

闭包和递归是强大的编程技术,它构成了被称为函数式编程的范式的基础。大多数人都会发现函数式编程比以下方法更难理解:for 循环、if 语句、变量和简单函数的方法。

以上就是“Go语言函数怎么定义与使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. 创建与使用函数定义与用法有哪些
  2. 如何在Python中定义与使用函数

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

go语言

上一篇:Xterm.js是什么及怎么使用

下一篇:React条件渲染如何使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》