本文实例讲述了go语言函数基本用法。分享给大家供大家参考,具体如下:
这里要说一下是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的作用前面说得很清楚了。
panic和recover我们就将他们看成是其他语言中的throw和catch
下面这个例子:
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接受到了信息,并且继续处理。
这个例子理解了基本就掌握了recover和panic
希望本文所述对大家go语言程序设计有所帮助。
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
-
-
Go打包二进制文件的实现
背景众所周知,go语言可打包成目标平台二进制文件是其一大优势,如此go项目在服务器不需要配置go环境和依赖就可跑起来。操作需求:打包部署到centos7笔者打包...
[阅读全文]
-
-
-
-
golang语言编码规范的实现
本规范旨在为日常go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性。本规范将从命名规范,注释规范,代码风格和 ...
[阅读全文]
-
-
-
网友评论