玩转Go语言之特殊的语法
defer 語句
這玩意基本沒啥作用,就是在一個(gè)函數(shù)中如果某行代碼前面有defer 關(guān)鍵字的話,這行代碼就最后執(zhí)行,如果有多個(gè)defer語句的話,遵循后進(jìn)先出的原則
例如:
fmt.Println("申請存儲空間")defer fmt.Println("釋放存儲空間")fmt.Println("使用存儲空間")fmt.Println("使用存儲空間")fmt.Println("使用存儲空間")復(fù)制代碼簡化代碼作用:
func ReadWrite() bool {file.Open("file")defer file.Closeif failureX {// file.Close()retrun false }if failureY {//file.Close()return false}//file.Closereturn true } 復(fù)制代碼總結(jié):
1.defer語句的格式
defer 語句
2.defer語句的作用
延遲執(zhí)行, 會在所屬函數(shù)執(zhí)行完畢之后再執(zhí)行
常用于資源釋放, 解鎖, 錯(cuò)誤處理等等
以前在C語言中我們說過, 通過malloc申請的存儲空間, 一定更要釋放free
但是由于我們不能寫完malloc之后立即free,所以經(jīng)常導(dǎo)致我們忘記釋放
malloc -- >申請存儲空間
... ... --> 使用存儲空間
free --> 釋放存儲空間
注意點(diǎn):
如果在同一個(gè)函數(shù)中編寫了多個(gè)defer語句, 那么會遵守先進(jìn)后出的原則
先注冊的defer語句后執(zhí)行, 后注冊的defer語句先執(zhí)行
init()函數(shù)
?1.在Go語言中保留了兩個(gè)函數(shù), 一個(gè)叫做main,另外一個(gè)叫做init
main函數(shù)是由系統(tǒng)調(diào)用的, init函數(shù)也是由系統(tǒng)調(diào)用的復(fù)制代碼2.init函數(shù)的作用:
對當(dāng)前文件進(jìn)行初始化復(fù)制代碼3.調(diào)用順序
4.注意點(diǎn):
main函數(shù)只能在main包中(package main), 并且一個(gè)程序只能有一個(gè), 但是init函數(shù)每個(gè)包中都可以有, 并且可以有多個(gè)(但是企業(yè)開發(fā)推薦只寫一個(gè)) 復(fù)制代碼上圖是每個(gè)包中初始化的先后順序
import幾種形式
1.點(diǎn)操作
import{. "fmt"
}
func main {
Println("點(diǎn)操作")
}
2.起別名
import{f "fmt"
}
func main {
f.Println("起別名")
}
3._操作
只是調(diào)用包的init函數(shù),不調(diào)用其他函數(shù)
import{_ "test"
}
轉(zhuǎn)載于:https://juejin.im/post/5ba99c0e6fb9a05cf039e802
總結(jié)
以上是生活随笔為你收集整理的玩转Go语言之特殊的语法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用汇编实现add函数
- 下一篇: 封装高可复用的服务端响应SSC程序修复对