Go 函数 学习笔记
来源:互联网 发布:淘宝装修店铺模板 编辑:程序博客网 时间:2024/06/07 19:52
函数function:
Go 函数 不支持 嵌套、重载和默认参数
但支持以下特性:无需声明原型、不定长度变参、多返回值、命名返回值参数匿名函数、闭包
定义函数使用关键字 func,且左大括号不能另起一行
函数也可以作为一种类型使用
defer
- defer的执行方式类似其它语言中的析构函数,在函数体执行结束后按照调用顺序的相反顺序逐个执行,即使函数发生严重错误也会执行。
- 支持匿名函数的调用
- 常用于资源清理、文件关闭、解锁以及记录时间等操作
- 通过与匿名函数配合可在return之后修改函数计算结果
- 如果函数体内某个变量作为defer时匿名函数的参数,则在定义defer
时即已经获得了拷贝,否则则是引用某个变量的地址
package mainimport ( "fmt")func main() { defer fmt.Println(1111) defer fmt.Println(2222) // fmt.Println("-------------------") for i := 0; i < 3; i++ { defer fmt.Println(i) } // fmt.Println("-------------------") // 如果函数体内某个变量作为defer时匿名函数的参数,则在定义defer时即已经获得了拷贝,否则则是引用某个变量的地址 for i := 4; i < 7; i++ { defer f(i) } // fmt.Println("-------------------") for i := 7; i < 10; i++ { //闭包 defer func() { fmt.Println(i) }() } // fmt.Println("-------------------")}func f(a int) { fmt.Println(a)}
输出结果:
panic/recover
Go 没有异常机制,但有 panic/recover 模式来处理错误
Panic 可以在任何地方引发,但recover只有在defer调用的函数中有效
package mainimport ( "fmt")func main() { A() B() C()}func A() { fmt.Println("func A")}func B() { defer func() { if err := recover(); err != nil { fmt.Println("recover in b") } }() panic("panic in b")}func C() { fmt.Println("func C")}
输出结果:
本文参考整理自:《Go 编程基础》
个人微信公众号:
作者:jiankunking 出处:http://blog.csdn.net/jiankunking
阅读全文
0 0
- Go 函数 学习笔记
- Go语言学习笔记---函数
- Go语言学习笔记(五) [函数]
- go基本语法学习笔记之函数
- Go学习笔记二(函数)
- Go语言学习笔记 -- 内建函数
- Go语言学习笔记 -- 函数(1)
- Go语言学习笔记 -- 函数(2)
- Go语言学习笔记(四)函数
- go语言学习笔记(9) 函数
- Go语言学习笔记之函数(function)
- Go 学习笔记:延迟执行函数 defer
- 【Go学习】Go的函数
- 【Go学习笔记】Hello Go!
- Go学习笔记——函数和包
- Go语言学习笔记(三) [控制结构、内建函数]
- GO语言学习笔记3(函数接口并发)
- Go语言学习笔记(三)-包、变量、函数
- CSDN博客换新颜
- [P1979]华容道
- HDU 1232-畅通工程(并查集)
- Linux accept()/epoll_wait()惊群问题与解决方案
- 深度学习调参技巧
- Go 函数 学习笔记
- HDU6102(树状数组 + 容斥 + 离线处理)
- adb环境变量的配置
- Kali linux & Aircrack-ng 破解 WPA/WPA2 无线网络
- 中文乱码,修改tomcat配置文件消失的问题
- Raft 为什么是更易理解的分布式一致性算法
- linux下epoll模型accept并发问题
- Mysql之索引类型
- MySQL_001_基础_字符集