Go语言分析
来源:互联网 发布:光线跟踪算法 编辑:程序博客网 时间:2024/06/07 17:45
跟C语言的差一点
例子
说明
函数格式不同
func GetMsg(i int) (r string) {
fmt.Println(i)
r = "hi"
return r
}
func说明这个是个函数
GetMsg是函数名
(i int) 函数接收一个int参数
(r string) 函数返回一个string类型返回值
函数可以返回多个返回值
func GetMsg(i int) (r string, err string) {
fmt.Println(i)
r = "hi"
err = "no err"
return r,err
}
这一点和C、PHP不一样,和lua是一样的。
Defer的使用
func ReadFile(filePath string)(){
file.Open(filePath)
defer file.Close()
if true {
file.Read()
} else {
return false
}
}
defer的意思是"在函数退出时调用",特别用于对文件进行读写操作的时候,需要在open之后要调用close操作,将close操作使用defer,这样写的意思是在file.Open后不立即调用close,当return false的时候调用file.Close().这样就有效避免了C语言中的内存泄露问题。
备注:原本代码需要在程序返回True和False的时候关闭文件,这样的话,只需要一次,且不会忘记。
Panic、recover
package main
import "fmt"
func main() {
f()
fmt.Println("Returned normally from f.")
}
func f() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in f", r)
}
}()
fmt.Println("Calling g.")
g(0)
fmt.Println("Returned normally from g.")
}
func g(i int) {
if i > 3 {
fmt.Println("Panicking!")
panic(fmt.Sprintf("%v", i))
}
defer fmt.Println("Defer in g", i)
fmt.Println("Printing in g", i)
g(i + 1)
}
返回了:
Calling g.
Printing in g 0
Printing in g 1
Printing in g 2
Printing in g 3
Panicking!
Defer in g 3
Defer in g 2
Defer in g 1
Defer in g 0
Recovered in f 4
Returned normally from f.
Panic抛出了信息,并且跳出函数。Recover接受到了信息,并且继续处理。
- Go语言分析
- Go语言 常用数据类型底层结构分析
- go语言defer执行时机简单分析
- go语言原生http库分析(1)
- go语言原生http库分析 (2)
- GO语言延迟函数defer用法分析
- Go语言 常用数据类型底层结构分析
- Go语言 常用数据类型底层结构分析
- Go语言用GoPacket抓包分析
- 【Go】Go语言初学
- Go语言
- Go语言
- Go语言
- go语言
- go语言
- Go语言
- Go语言
- Go语言
- 批处理 大小写转换
- QtPropertyBrowser简介
- Html5基础笔记
- Android中Socket通信之TCP与UDP传输原理
- PHP filter_input() 函数
- Go语言分析
- 杭电5523 Game
- android TabHost各选项卡显示的对应内容错乱
- php 的定界符 <<<eof 的问题
- O(1) Check Power of 2
- jquery过滤性选择器
- Sqoop修改sqoop元信息实现job的增量导入
- Code Forces 496 A. Minimum Difficulty(水~)
- android的面试题