博客
关于我
go语言学习--day3(函数)
阅读量:593 次
发布时间:2019-03-12

本文共 1356 字,大约阅读时间需要 4 分钟。

这是一个关于Golang函数特性的实例解析,涵盖了函数定义、调用方式以及相关语法细节。通过以下内容你可以全面了解如何在Golang中编写和使用函数。

1. 函数定义与语法

Golang的函数定义具有严格的语法结构。函数定义通常包括函数名、参数列表和返回值列表。语法格式如下:

func FunctionName(parameters) {    // 函数体}

2. 递归函数

递归函数是一种常见的编程模式,适用于可以分解成重复子问题的场景。以下是一个递归函数的示例:

func Recurrent(a int) int {    if a < 100 {        return Recurrent(a)    }    return a * 2}

调用递归函数的方式与普通函数类似。例如:

num := 1numbers := Recurrent(num)fmt.Println(numbers)

3. 多返回值函数

Golang支持函数返回多个值。以下是一个多返回值函数的示例:

func FunTest() (int, string, bool) {    return 1, "多返回值", false}

调用多返回值函数时,可以使用赋值操作符:

a, b, c := FunTest()fmt.Println(a)  // 输出: 1fmt.Println(b)  // 输出: "多返回值"fmt.Println(c)  // 输出: false

4. 可变参数函数

可变参数函数允许 σας传递任意数量的参数。以下是一个可变参数函数的示例:

func sum(nums ... int) int {    total := 0    for _, val := range nums {        total += val    }    return total}

调用可变参数函数时,可以传递任意数量的参数:

fmt.Println(sum(1, 2, 3))  // 输出: 6fmt.Println(sum(1, 2, 3, 4))  // 输出: 10

5. defer 语法

defer 语法用于推迟函数的执行。通常用于 cleanup 操作或释放资源。例如:

fmt.Println("A") defer fmt.Println("B") fmt.Println("C")

执行上述代码会输出以下结果:

ABC

6. 返回值的两步过程

函数返回值的赋值和真正返回是分开的两个步骤。defer 语法可以在这两个步骤之间执行。例如:

s := ""defer func() {    s = "完成赋值"}()return s

在上述代码中,函数返回值的赋值和真正返回之间会执行 defer 中的代码。因此,最终 s 将被赋值为 "完成赋值"。

7. 调用函数作为类型

你可以将函数作为类型进行赋值和比较。例如:

fun_type := Recurrentfmt.Println(fun_type(2))  // 输出: 4

总结

通过以上示例,你可以快速掌握Golang的函数特性。从递归和多返回值到可变参数和 defer,这些功能使Golang成为一员强大且灵活的编程语言。

转载地址:http://ujcxz.baihongyu.com/

你可能感兴趣的文章
2020-05-31 py执行时超时控制
查看>>
一段强大的shellcode
查看>>
双链表相加问题
查看>>
GB2312-80 汉字机内码
查看>>
n的a进制数
查看>>
配置jdk的环境变量
查看>>
【C++ Primer 第五版】处理类型
查看>>
echo命令的颜色及同行显示控制
查看>>
CentOS7利用Systemd添加用户自定义系统服务
查看>>
懒人HTML5笔记-1
查看>>
两台服务器http方式共享yum软件仓库
查看>>
团队背包(team)
查看>>
java字节流与字符流的区别
查看>>
异常信息ASM ClassReader failed to parse class file的问题解决
查看>>
Mysql 批量杀死进程
查看>>
there is no statement named xxx in this SqlMap
查看>>
spring tx:advice 和 aop:config 配置事务
查看>>
修改layui的后台模板的左侧导航栏可以伸缩
查看>>
Mybatis Generator最完整配置详解
查看>>
报错:For input string
查看>>