国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

Go語言函數(shù)學(xué)習(xí)教程

2020-04-01 19:09:42
字體:
供稿:網(wǎng)友

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

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

1 函數(shù)格式不同

復(fù)制代碼 代碼如下:
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ù)可以返回多個返回值

這點(diǎn)和c,php都不一樣,和lua是一樣的

復(fù)制代碼 代碼如下:
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)用",特別用于對文件進(jìn)行讀寫操作的時候,需要在open之后要調(diào)用close操作,將close操作使用defer

復(fù)制代碼 代碼如下:
func ReadFile(filePath string)(){
    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

下面這個例子:

復(fù)制代碼 代碼如下:
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)
}

 

返回了:

 

復(fù)制代碼 代碼如下:
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語言程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 台北县| 嘉黎县| 宜君县| 龙江县| 天镇县| 甘德县| 南昌市| 罗平县| 商城县| 门头沟区| 霍邱县| 嘉禾县| 石嘴山市| 张家口市| 南涧| 乌鲁木齐县| 长岛县| 北京市| 香港 | 平武县| 光泽县| 泰州市| 太湖县| 望江县| 湄潭县| 嘉定区| 夏邑县| 桓台县| 修武县| 和龙市| 于都县| 垦利县| 双鸭山市| 蕲春县| 莆田市| 贡觉县| 台东县| 淮南市| 昌平区| 永靖县| 永济市|