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

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

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

本文實例講述了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語言程序設(shè)計有所幫助。

相關(guān)文章

  • Go語言中strings和strconv包示例代碼詳解

    Go語言中strings和strconv包示例代碼詳解

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

    GoFrame框架ORM原生方法對象操作開箱體驗

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

    golang time常用方法詳解

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

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

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

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

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

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

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

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

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

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

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

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

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

    Go?easyjson使用及反射原理

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

最新評論

绩溪县| 南宫市| 桦甸市| 土默特左旗| 专栏| 莒南县| 蓬安县| 阿克| 高淳县| 雷波县| 泽普县| 谢通门县| 保德县| 绍兴市| 北票市| 青田县| 焦作市| 丽水市| 长阳| 武夷山市| 安达市| 托克托县| 五原县| 旬邑县| 皋兰县| 台前县| 和硕县| 武汉市| 林西县| 桂阳县| 元氏县| 罗江县| 三门县| 长宁县| 保德县| 溆浦县| 大理市| 增城市| 比如县| 侯马市| 平和县|