第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Go例子和成語

Go例子和成語

Go
慕容708150 2021-04-06 17:19:18
沒有太多的Go語言代碼可用于學(xué)習(xí)該語言,而且我敢肯定,我并不是唯一一個(gè)嘗試過該語言的人。因此,如果您發(fā)現(xiàn)有關(guān)該語言的一些有趣信息,請?jiān)诖颂幇l(fā)布示例。我也在尋找Go中慣用的方式來做事,C / C ++思維風(fēng)格“移植”到Go,有關(guān)語法的常見陷阱,真的很有趣。
查看完整描述

3 回答

?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

推遲陳述


“ defer”語句調(diào)用一個(gè)函數(shù),該函數(shù)的執(zhí)行被推遲到周圍函數(shù)返回的那一刻。


DeferStmt =“ defer”表達(dá)式。


表達(dá)式必須是函數(shù)或方法調(diào)用。每次執(zhí)行“ defer”語句時(shí),都會對函數(shù)調(diào)用的參數(shù)進(jìn)行評估并重新保存,但不會調(diào)用該函數(shù)。延遲的函數(shù)調(diào)用將在周圍函數(shù)返回之前立即以LIFO順序執(zhí)行,但是在對返回值(如果有)進(jìn)行求值之后才執(zhí)行。



lock(l);

defer unlock(l);  // unlocking happens before surrounding function returns


// prints 3 2 1 0 before surrounding function returns

for i := 0; i <= 3; i++ {

    defer fmt.Print(i);

}

更新:


defer現(xiàn)在也處理慣用方式panic在例外樣方式:


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ù) 2021-04-26
?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

Go對象文件實(shí)際上包含明文標(biāo)題:


jurily@jurily ~/workspace/go/euler31 $ 6g euler31.go

jurily@jurily ~/workspace/go/euler31 $ cat euler31.6

amd64

  exports automatically generated from

  euler31.go in package "main"

    import


$$  // exports

  package main

    var main.coin [9]int

    func main.howmany (amount int, max int) (? int)

    func main.main ()

    var main.initdone· uint8

    func main.init ()


$$  // local types

  type main.dsigddd_1·1 struct { ? int }


$$


!

<binary segment>


查看完整回答
反對 回復(fù) 2021-04-26
?
繁華開滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊

我看到幾個(gè)人抱怨“ for-loop”,類似“為什么i = 0; i < len; i++在這個(gè)時(shí)代必須說?”。


我不同意,我喜歡for結(jié)構(gòu)。如果愿意,可以使用長版本,但是慣用的Go是


var a = []int{1, 2, 3}

for i, v := range a {

    fmt.Println(i, v)

}

該for .. range構(gòu)造在所有元素上循環(huán)并提供兩個(gè)值-索引i和值v。


range 也適用于地圖和頻道。


不過,如果您不喜歡for任何形式,則可以在以下幾行中定義each,map等等:


type IntArr []int


// 'each' takes a function argument.

// The function must accept two ints, the index and value,

// and will be called on each element in turn.

func (a IntArr) each(fn func(index, value int)) {

    for i, v := range a {

        fn(i, v)

    }

}


func main() {

    var a = IntArr([]int{2, 0, 0, 9}) // create int slice and cast to IntArr

    var fnPrint = func(i, v int) {

        fmt.Println(i, ":", v)

    } // create a function


    a.each(fnPrint) // call on each element

}

印刷


0 : 2

1 : 0

2 : 0

3 : 9

我開始非常喜歡Go :)


查看完整回答
反對 回復(fù) 2021-04-26
  • 3 回答
  • 0 關(guān)注
  • 273 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號