go语言函数介绍

互联网 19-11-30

Go函数和一些其他语言不一样的地方

1、函数格式不同

func GetMsg(i int) (r string) {     fmt.Println(i)     r = "hi"     return r   }

func说明这个是个函数

GetMsg是函数名

(i int) 函数接收一个int参数

(r string) 函数返回一个string类型返回值

2、函数可以返回多个返回值

这点和c,php都不一样,和lua是一样的

func GetMsg(i int) (r string, err string) {     fmt.Println(i)     r = "hi"     err = "no err"     return r,err   }

3、defer的使用

defer的意思是"在函数退出时调用",特别用于对文件进行读写操作的时候,需要在open之后要调用close操作,将close操作使用defer

func ReadFile(filePath string)(){     file.Open(filePath)     defer file.Close()           if true {         file.Read()     } else {         return false     }   }

这样写的意思是在file.Open后不立即调用close,当return false的时候调用file.Close().这样就有效避免了C语言中的内存泄露问题。

4、比较难理解的:panic,recover和defer

defer:推荐:go defer(go延迟函数)介绍

Panic和Recover我们就将他们看成是其他语言中的throw和catch

下面这个例子:

ackage 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语言函数介绍的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: go语言
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:go语言的init函数详解

相关资讯