Go语言函数学习教程
本文实例讲述了Go语言函数基本用法。分享给大家供大家参考,具体如下:
这里要说一下是Go函数和一些其他语言不一样的地方
1函数格式不同
funcGetMsg(iint)(rstring){ fmt.Println(i) r="hi" returnr }
func说明这个是个函数
GetMsg是函数名
(iint)函数接收一个int参数
(rstring)函数返回一个string类型返回值
2函数可以返回多个返回值
这点和c,php都不一样,和lua是一样的
funcGetMsg(iint)(rstring,errstring){ fmt.Println(i) r="hi" err="noerr" returnr,err }
3defer的使用
defer的意思是"在函数退出时调用",特别用于对文件进行读写操作的时候,需要在open之后要调用close操作,将close操作使用defer
funcReadFile(filePathstring)(){ file.Open(filePath) deferfile.Close() iftrue{ file.Read() }else{ returnfalse } }
这样写的意思是在file.Open后不立即调用close,当returnfalse的时候调用file.Close().这样就有效避免了C语言中的内存泄露问题。
4比较难理解的:panic,recover和defer
defer的作用前面说得很清楚了。
Panic和Recover我们就将他们看成是其他语言中的throw和catch
下面这个例子:
packagemain import"fmt" funcmain(){ f() fmt.Println("Returnednormallyfromf.") } funcf(){ deferfunc(){ ifr:=recover();r!=nil{ fmt.Println("Recoveredinf",r) } }() fmt.Println("Callingg.") g(0) fmt.Println("Returnednormallyfromg.") } funcg(iint){ ifi>3{ fmt.Println("Panicking!") panic(fmt.Sprintf("%v",i)) } deferfmt.Println("Defering",i) fmt.Println("Printinging",i) g(i+1) }
返回了:
Callingg. Printinging0 Printinging1 Printinging2 Printinging3 Panicking! Defering3 Defering2 Defering1 Defering0 Recoveredinf4 Returnednormallyfromf.
Panic抛出了信息,并且跳出函数。Recover接受到了信息,并且继续处理。
这个例子理解了基本就掌握了Recover和Panic
希望本文所述对大家Go语言程序设计有所帮助。