Go語言函數(shù)學(xué)習(xí)教程
本文實(shí)例講述了Go語言函數(shù)基本用法。分享給大家供大家參考,具體如下:
這里要說一下是Go函數(shù)和一些其他語言不一樣的地方
1 函數(shù)格式不同
fmt.Println(i)
r = "hi"
return r
}
func說明這個是個函數(shù)
GetMsg是函數(shù)名
(i int) 函數(shù)接收一個int參數(shù)
(r string) 函數(shù)返回一個string類型返回值
2 函數(shù)可以返回多個返回值
這點(diǎn)和c,php都不一樣,和lua是一樣的
fmt.Println(i)
r = "hi"
err = "no err"
return r,err
}
3 defer的使用
defer的意思是"在函數(shù)退出時調(diào)用",特別用于對文件進(jìn)行讀寫操作的時候,需要在open之后要調(diào)用close操作,將close操作使用defer
file.Open(filePath)
defer file.Close()
if true {
file.Read()
} else {
return false
}
}
這樣寫的意思是在file.Open后不立即調(diào)用close,當(dāng)return false的時候調(diào)用file.Close().這樣就有效避免了C語言中的內(nèi)存泄露問題。
4 比較難理解的:panic,recover和defer
defer的作用前面說得很清楚了。
Panic和Recover我們就將他們看成是其他語言中的throw和catch
下面這個例子:
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)
}
返回了:
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拋出了信息,并且跳出函數(shù)。Recover接受到了信息,并且繼續(xù)處理。
這個例子理解了基本就掌握了Recover和Panic
希望本文所述對大家Go語言程序設(shè)計有所幫助。
相關(guān)文章
深入理解Golang之http server的實(shí)現(xiàn)
這篇文章主要介紹了深入理解Golang之http server的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
GoLand 2020.3 正式發(fā)布有不少新功能(支持泛型)
這是 2020 年第 3 個版本,也是最后一個版本,你還將發(fā)現(xiàn)許多新的代碼編輯功能,具體內(nèi)容詳情跟隨小編看看有哪些新特性2020-12-12
Golang中文件目錄操作的實(shí)現(xiàn)步驟詳解
在Golang中,文件目錄是指計算機(jī)文件系統(tǒng)中的文件夾或目錄。目錄是用于組織和存儲文件的一種方式,可以包含文件和其他子目錄,本文主要介紹了Golang中文件目錄操作的實(shí)現(xiàn)方法,需要的朋友可以參考下2023-05-05

