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语言程序设计有所帮助。
热门推荐
10 舅妈生日红包祝福语简短
11 女神结婚快乐祝福语简短
12 新年酒席开席祝福语简短
13 20岁简短生日祝福语
14 开店大吉文案祝福语简短
15 家庭英语祝福语短句简短
16 小红书平安祝福语简短
17 老哥出门祝福语简短语
18 创业失败返乡祝福语简短