91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang中的函數

發布時間:2020-06-21 20:27:20 來源:億速云 閱讀:167 作者:鴿子 欄目:編程語言

Go函數和一些其他語言不一樣的地方

1、函數格式不同

func GetMsg(i int) (r string) {
    fmt.Println(i)
    r = "hi"
    return r
 
}

func說明這個是個函數

GetMsg是函數名

(i int) 函數接收一個int參數

(r string) 函數返回一個string類型返回值

2、函數可以返回多個返回值

這點和c,php都不一樣,和lua是一樣的

func GetMsg(i int) (r string, err string) {
    fmt.Println(i)
    r = "hi"
    err = "no err"
    return r,err
 
}

3、defer的使用

defer的意思是"在函數退出時調用",特別用于對文件進行讀寫操作的時候,需要在open之后要調用close操作,將close操作使用defer

func ReadFile(filePath string)(){
    file.Open(filePath)
    defer file.Close()
     
    if true {
        file.Read()
    } else {
        return false
    }
 
}

這樣寫的意思是在file.Open后不立即調用close,當return false的時候調用file.Close().這樣就有效避免了C語言中的內存泄露問題。

4、比較難理解的:panic,recover和defer

defer:推薦:go defer(go延遲函數)介紹

Panic和Recover我們就將他們看成是其他語言中的throw和catch

下面這個例子:

ackage main
 
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)
}

返回了:

Calling g.
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拋出了信息,并且跳出函數。Recover接受到了信息,并且繼續處理。

以上就是go語言函數介紹的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苍溪县| 陇南市| 广德县| 徐州市| 唐山市| 万州区| 瓦房店市| 岑巩县| 兴隆县| 恩平市| 云浮市| 大兴区| 金华市| 黑河市| 大同市| 锦州市| 鱼台县| 格尔木市| 刚察县| 康平县| 探索| 安康市| 志丹县| 绿春县| 贵溪市| 肇源县| 固阳县| 安多县| 上饶市| 措勤县| 巴林左旗| 剑川县| 临猗县| 钟山县| 温宿县| 马山县| 江城| 临安市| 兴安县| 泸州市| 湟中县|