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