我是靠谱客的博主 帅气小蝴蝶,最近开发中收集的这篇文章主要介绍Go语言学习之函数的定义与使用详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、函数定义

函数的定义和java一样,使用{}进行包裹,并且要明确入参类型以及返回类型。

样例代码如下:

func min(num1, num2 int) int {
    if num1 <= num2 {
        return num1
    } else {
        return num2
    }
}
 
func main() {
    fmt.Printf("max = %dn", min(10, 12))
}

执行结果

max = 10

2、多值返回

和Python一样,可以多值返回。

样例代码如下

func swap(num1, num2 int) (int, string) {
    return num1 + num2, "haha"
}
 
func main() {
    a, b := swap(10, 12)
    fmt.Printf("swap = %d - %vn", a, b)
}

执行结果

swap = 22 - haha

3、引用传递

可以将参数的引用地址传递到函数,这样操作会影响到实际参数。

样例代码如下

func swap1(num1, num2 *int) {
    var temp int
    temp = *num1
    *num1 = *num2
    *num2 = temp
}
 
 
func main() {
    c, d := 10, 20
    swap1(&c, &d)
    fmt.Printf("swap1 c=%d,d=%dn", c, d)
}

执行结果

 swap1 c=20,d=10

4、函数作为实参使用

和python一样,可以在方法内部定义函数。

样例代码如下

func method(num1 int) int {
    getMax := func(x, y int) int {
        if x > y {
            return x
        } else {
            return y
        }
    }
    a := num1 - 10
    b := getMax(num1, a)
    fmt.Printf("value = %dn", b)
    return b
}
 
func main() {
    fmt.Printf("method = %dn", method(20))
}

执行结果

value = 20                         
method = 20

5、匿名函数

函数返回匿名函数,形成闭包。

样例代码如下

//匿名函数
func anonymous(num int) func() int {
    var a int
    a = num
    return func() int {
        a += 1
        return a
    }
 
}
 
func main() {
    flagNum := anonymous(100)
    fmt.Printf("1 -> %dn", flagNum())
    fmt.Printf("2 -> %dn", flagNum())
    fmt.Printf("3 -> %dn", flagNum())
    flagNum1 := anonymous(18)
    fmt.Printf("4 -> %dn", flagNum1())
    fmt.Printf("5 -> %dn", flagNum1())
}

执行结果

1 -> 101                           
2 -> 102                           
3 -> 103                           
4 -> 19                            
5 -> 20

到此这篇关于Go语言学习之函数的定义与使用详解的文章就介绍到这了,更多相关Go语言 函数内容请搜索靠谱客以前的文章或继续浏览下面的相关文章希望大家以后多多支持靠谱客!

最后

以上就是帅气小蝴蝶为你收集整理的Go语言学习之函数的定义与使用详解的全部内容,希望文章能够帮你解决Go语言学习之函数的定义与使用详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部