最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2016年07月27日 11:59:10   作者:軒脈刃  
這篇文章主要介紹了Go語(yǔ)言函數(shù)基本用法,結(jié)合實(shí)例形式分析了Go語(yǔ)言函數(shù)的格式、定義、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下

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

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

1 函數(shù)格式不同

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

func說(shuō)明這個(gè)是個(gè)函數(shù)

GetMsg是函數(shù)名

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

(r string) 函數(shù)返回一個(gè)string類(lèi)型返回值

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

這點(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ù)退出時(shí)調(diào)用",特別用于對(duì)文件進(jìn)行讀寫(xiě)操作的時(shí)候,需要在open之后要調(diào)用close操作,將close操作使用defer

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

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

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

defer的作用前面說(shuō)得很清楚了。

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

下面這個(gè)例子:

復(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ù)處理。

這個(gè)例子理解了基本就掌握了Recover和Panic

希望本文所述對(duì)大家Go語(yǔ)言程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Go語(yǔ)言中strings和strconv包示例代碼詳解

    Go語(yǔ)言中strings和strconv包示例代碼詳解

    這篇文章主要介紹了Go語(yǔ)言中strings和strconv包示例代碼詳解 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • GoFrame框架ORM原生方法對(duì)象操作開(kāi)箱體驗(yàn)

    GoFrame框架ORM原生方法對(duì)象操作開(kāi)箱體驗(yàn)

    這篇文章主要為大家介紹了GoFrame框架ORM原生方法對(duì)象操作的開(kāi)箱體驗(yàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • golang time常用方法詳解

    golang time常用方法詳解

    這篇文章主要介紹了golang time常用方法詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • go循環(huán)依賴(lài)的最佳解決方案

    go循環(huán)依賴(lài)的最佳解決方案

    ? import cycle not allowed(循環(huán)依賴(lài)不被允許)相信作為每一個(gè)golang語(yǔ)言使用研發(fā),都遇到過(guò)這個(gè)令人頭痛的報(bào)錯(cuò),循環(huán)依賴(lài)是指兩個(gè)或多個(gè)模塊之間互相依賴(lài),形成了一個(gè)閉環(huán)的情況,本文會(huì)結(jié)合部分案例對(duì)解決方案進(jìn)行講解,需要的朋友可以參考下
    2023-10-10
  • GO語(yǔ)言實(shí)現(xiàn)批量壓縮圖片和水印

    GO語(yǔ)言實(shí)現(xiàn)批量壓縮圖片和水印

    這篇文章主要介紹了GO語(yǔ)言實(shí)現(xiàn)批量壓縮圖片和水印,主要用到了github.com/nfnt/resize這個(gè)第三方庫(kù),僅僅支持JPG圖片格式,有相同需求的小伙伴參考下吧。
    2015-03-03
  • 深入理解Golang之http server的實(shí)現(xiàn)

    深入理解Golang之http server的實(shí)現(xiàn)

    這篇文章主要介紹了深入理解Golang之http server的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • GoLand 2020.3 正式發(fā)布有不少新功能(支持泛型)

    GoLand 2020.3 正式發(fā)布有不少新功能(支持泛型)

    這是 2020 年第 3 個(gè)版本,也是最后一個(gè)版本,你還將發(fā)現(xiàn)許多新的代碼編輯功能,具體內(nèi)容詳情跟隨小編看看有哪些新特性
    2020-12-12
  • 舉例講解Go語(yǔ)言中函數(shù)的閉包使用

    舉例講解Go語(yǔ)言中函數(shù)的閉包使用

    這篇文章主要介紹了Go語(yǔ)言中函數(shù)的閉包使用示例,函數(shù)閉包c(diǎn)losure是編程語(yǔ)言中十分重要的特性,需要的朋友可以參考下
    2016-03-03
  • Golang中文件目錄操作的實(shí)現(xiàn)步驟詳解

    Golang中文件目錄操作的實(shí)現(xiàn)步驟詳解

    在Golang中,文件目錄是指計(jì)算機(jī)文件系統(tǒng)中的文件夾或目錄。目錄是用于組織和存儲(chǔ)文件的一種方式,可以包含文件和其他子目錄,本文主要介紹了Golang中文件目錄操作的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-05-05
  • Go?easyjson使用及反射原理

    Go?easyjson使用及反射原理

    這篇文章主要介紹了Go?easyjson使用技巧,詳細(xì)介紹了go自帶JSON庫(kù)使用的反射原理,性能相對(duì)較差,可以使用easyjson代替,需要的朋友可以參考下
    2022-04-04

最新評(píng)論

舒兰市| 舟山市| 慈溪市| 景洪市| 东乡族自治县| 改则县| 巫溪县| 灌云县| 湘阴县| 金寨县| 肃北| 铁岭市| 洛隆县| 石河子市| 灵石县| 习水县| 婺源县| 山丹县| 富源县| 和龙市| 贺兰县| 错那县| 锡林郭勒盟| 二连浩特市| 靖边县| 佛山市| 万山特区| 乌拉特前旗| 通江县| 韩城市| 清镇市| 九龙城区| 正安县| 商南县| 云林县| 榆社县| 铁力市| 徐汇区| 武夷山市| 嘉善县| 阿拉善左旗|