佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Go語言函數(shù)學習教程

Go語言函數(shù)學習教程

熱門標簽:鐵路電話系統(tǒng) AI電銷 百度競價排名 呼叫中心市場需求 服務外包 網(wǎng)站排名優(yōu)化 Linux服務器 地方門戶網(wǎng)站

本文實例講述了Go語言函數(shù)基本用法。分享給大家供大家參考,具體如下:

這里要說一下是Go函數(shù)和一些其他語言不一樣的地方

1 函數(shù)格式不同

復制代碼 代碼如下:
func GetMsg(i int) (r string) {
    fmt.Println(i)
    r = "hi"
    return r
}

func說明這個是個函數(shù)

GetMsg是函數(shù)名

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

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

2 函數(shù)可以返回多個返回值

這點和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的意思是"在函數(shù)退出時調(diào)用",特別用于對文件進行讀寫操作的時候,需要在open之后要調(diào)用close操作,將close操作使用defer

復制代碼 代碼如下:
func ReadFile(filePath string)(){
    file.Open(filePath)
    defer file.Close()
    if true {
        file.Read()
    } else {
        return false
    }
}

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

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

defer的作用前面說得很清楚了。

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

下面這個例子:

復制代碼 代碼如下:
package 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拋出了信息,并且跳出函數(shù)。Recover接受到了信息,并且繼續(xù)處理。

這個例子理解了基本就掌握了Recover和Panic

希望本文所述對大家Go語言程序設計有所幫助。

您可能感興趣的文章:
  • Go語言中的Slice學習總結
  • GO 語言學習指南
  • Go語言學習筆記之反射用法詳解
  • Go語言基礎學習教程
  • Go語言學習教程之聲明語法(譯)
  • golang新手不注意可能會出現(xiàn)的一些小問題

標簽:黃山 湘潭 銅川 湖南 蘭州 仙桃 崇左 衡水

巨人網(wǎng)絡通訊聲明:本文標題《Go語言函數(shù)學習教程》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    都昌县| 长兴县| 林芝县| 汉川市| 苏尼特右旗| 五台县| 兴海县| 鄂伦春自治旗| 达日县| 石嘴山市| 丰都县| 嘉定区| 长寿区| 灵寿县| 扶风县| 弋阳县| 锡林浩特市| 乐安县| 安吉县| 米林县| 广东省| 武山县| 邹平县| 济阳县| 黎城县| 南澳县| 衡阳市| 合阳县| 高邑县| 冀州市| 洪湖市| 济源市| 石楼县| 株洲市| 彭州市| 新干县| 资源县| 兴文县| 新巴尔虎右旗| 乐清市| 莆田市|