• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Golang中的自定义函数详解

    不管是面向过程的编程,还是面向对象的编程,都离不开函数的概念,分别是,参数,函数名,返回值。接下来我们看看Go语言在这三个方面是做怎么操作的吧。

    参数

    谈到参数,我们在写函数或者是类中的方法的时候都需要考虑我们应该传递怎样的参数,或者是是否需要参数。
    参数首先分为无参函数有参。无参也就是没有参数,也就不用写了。

    有参

    func functionTest() {  # 小括号内就是用来放参数的
        # 函数体内
    }

    Go语言是强数据类型的语言,参数是要指定类型的不然就报错。func 是函数的声明关键字。

    func 函数名(参数列表) 返回值类型 {函数体内部}

    func addTwoNumber(a int, b int) int {
        return a + b
    }

    我们这里写了一个很简单的函数,把两个数相加并返回结果
    这里我们要注意,参数的类型是写在参数名的后面,和变量定义是一样的。

    func addTwoNumber(a int, b int)  (sum int) {
        return a+b
    }

    返回值的定义,是可以给返回值取一个名称的,还有一点是和其他的编程语言不一样的是在Go语言中函数的返回值可以有多个的。

    func addTwoNumber(a int, b int)  (int, int) {
        return a+b, a-b
    }

    同时可以给返回值取一个别名

    func addTwoNumber(a int, b int)  (sum, dif int) {
        return a+b, a-b
    }

    像这样给返回值取完名字后可以给返回值直接赋值

    func addTwoNumber(a int, b int)  (sum, dif int) {
        sum = a+b
        dif = a-b
        return
    }

    同样这样也是可以直接返回sum,和dif两个值的。

    同时Go语言也具有和c语言一样的匿名参数只做占位的作用,Go语言还不仅如此,还有声明变量可以占位的功能。

    func addTwoNumber(int, b int)  (int, int) {
        return b, b
    }
    func main() {
        a, _, c := 1, 2, 3
        fmt.Println(a, c)
    }

    其中_是用来占位的,并不可以使用。
    可变参数列表

    func sum(numbers ...int) int {
        s := 0
        for i := range numbers{
            s += i
        }
        return s
    }
    func main() {
        fmt.Println(sum(1,2,3,4,5))
    }

    像这样我们就可以传给sum函数多个值了。

    Go中的值传递,地址传递

    在很多语言中,在调用函数或者是方法的时候,都是要考虑我们是传递值还是传递地址(在某些语言中叙述的是传递引用),到底是传递值还是传递地址这一概念是非常重要的,我们应该弄清楚。

    我们用一个交换数的例子来讲解:

    值传递

    package main

    import "fmt"

    func swap(x, y int) {
        var temp = x
        x = y
        y = temp
    }
    func main() {
        a,b := 1,2
        swap(a,b)
        fmt.Println(a, b)
    }


    地址传递

    package main

    import "fmt"

    func swap(a, b *int) {
        var temp = *a
        *a = *b
        *b = temp
    }
    func main() {
        a,b := 1,2
        swap(a,b)
        fmt.Println(a, b)
    }

    您可能感兴趣的文章:
    • Go语言中函数的参数传递与调用的基本方法
    • 深入解析golang编程中函数的用法
    • Golang 如何实现函数的任意类型传参
    上一篇:Go语言的JSON处理详解
    下一篇:Golang中的变量学习小结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Golang中的自定义函数详解 Golang,中的,自定义,函数,