脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - Go语言学习之函数的定义与使用详解

Go语言学习之函数的定义与使用详解

2022-09-24 14:19剑客阿良_ALiang Golang

这篇文章主要为大家详细介绍Go语言中函数的定义与使用,文中的示例代码讲解详细,对我们学习Go语言有一定帮助,需要的可以参考一下

1、函数定义

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

样例代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
func min(num1, num2 int) int {
    if num1 <= num2 {
        return num1
    } else {
        return num2
    }
}
 
func main() {
    fmt.Printf("max = %d\n", min(10, 12))
}

执行结果

max = 10

2、多值返回

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

样例代码如下

?
1
2
3
4
5
6
7
8
func swap(num1, num2 int) (int, string) {
    return num1 + num2, "haha"
}
 
func main() {
    a, b := swap(10, 12)
    fmt.Printf("swap = %d - %v\n", a, b)
}

执行结果

swap = 22 - haha

3、引用传递

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

样例代码如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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=%d\n", c, d)
}

执行结果

 swap1 c=20,d=10

4、函数作为实参使用

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

样例代码如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 = %d\n", b)
    return b
}
 
func main() {
    fmt.Printf("method = %d\n", method(20))
}

执行结果

value = 20                         
method = 20

5、匿名函数

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

样例代码如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//匿名函数
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 -> %d\n", flagNum())
    fmt.Printf("2 -> %d\n", flagNum())
    fmt.Printf("3 -> %d\n", flagNum())
    flagNum1 := anonymous(18)
    fmt.Printf("4 -> %d\n", flagNum1())
    fmt.Printf("5 -> %d\n", flagNum1())
}

执行结果

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

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

原文链接:https://blog.csdn.net/zhiweihongyan1/article/details/124241617

延伸 · 阅读

精彩推荐
  • GolangGolang基础教程之字符串string实例详解

    Golang基础教程之字符串string实例详解

    这篇文章主要给大家介绍了关于Golang基础教程之字符串string的相关资料,需要的朋友可以参考下...

    CoreDump丶7132022-07-11
  • GolangGolang巧用defer进行错误处理的方法

    Golang巧用defer进行错误处理的方法

    错误处理是程序的重要组成部分,有效且优雅的处理错误是大多数程序员的追求,下面这篇文章主要给大家介绍了关于Golang中巧用defer进行错误处理的方法...

    简书5642020-05-06
  • GolangGolang中的自定义类型之间的转换的实现(type conversion)

    Golang中的自定义类型之间的转换的实现(type conversion)

    这篇文章主要介绍了Golang中的自定义类型之间的转换的实现(type conversion),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习...

    龙鹤鹿8542021-03-30
  • Golang一文理解Go 中的可寻址和不可寻址

    一文理解Go 中的可寻址和不可寻址

    如果字典的元素不存在,则返回零值,而零值是不可变对象,如果能寻址问题就大了。而如果字典的元素存在,考虑到 Go 中 map 实现中元素的地址是变化的...

    写代码的明哥8622021-11-19
  • GolangGo 内存分配管理

    Go 内存分配管理

    这篇文章主要介绍了Go 内存分配管理,go 语言实际内存、虚拟内存怎么分配,延迟归还是什么机制?本文结合监控对内存管理进行了观测,深入学习golang对...

    编程技术4472022-09-05
  • GolangGo语法糖之‘...’ 的使用实例详解

    Go语法糖之‘...’ 的使用实例详解

    语法糖(Syntactic sugar),也译为糖衣语法,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。这篇文章主要给...

    mrr3702020-05-20
  • GolangGo语言中使用反射的方法

    Go语言中使用反射的方法

    这篇文章主要介绍了Go语言中使用反射的方法,实例分析了Go语言实现反射的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    脚本之家3812020-04-14
  • GolangGolang 实现interface类型转string类型

    Golang 实现interface类型转string类型

    这篇文章主要介绍了Golang 实现interface类型转string类型的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    一条小码农10782021-05-28