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

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

Go - var 和 func 定義函數(shù)的區(qū)別

Go - var 和 func 定義函數(shù)的區(qū)別

Go
慕神8447489 2022-12-13 10:29:47
我來自 Scala 背景,在 Scala 中,您可以將函數(shù)定義為單個值或實際函數(shù),例如:val inc1: Int => Int = _ + 1 // single FUNCTION valuedef inc2(x: Int): Int = x + 1 // normal function definition// in this case "inc1 eq inc1" is true, since this is a single instance// but "inc2 eq inc2" is false這兩個有一些差異(即大小分配,第一個是單個實例,而另一個在每次調用時返回一個實例,...),因此根據(jù)用例,我們可以推斷出哪個一個使用。現(xiàn)在我是 golang 的新手,想知道以下 2 個函數(shù)定義(如果我用詞有誤請糾正我)在 Golang 中是否不同,如果有,有什么區(qū)別?var inc1 = func(x int) int { return x + 1 }func inc2(x int) int { return x + 1 }提前致謝!
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經(jīng)驗 獲得超9個贊

Scala 大量借鑒了函數(shù)式編程。去沒有。

(如果你使用過多種其他編程語言,你絕對應該閱讀Go 規(guī)范。它不是很長,因為 Go 不是一種非常大的語言,盡管新的泛型肯定會使事情復雜化一些。)

在 Go 中,func關鍵字引入函數(shù)定義或函數(shù)類型,具體細節(jié)取決于上下文。關鍵字var引入變量聲明。1 所以:

func inc2(x int) int { return x + 1 }

定義了一個函數(shù),inc2,其代碼如圖所示。但:

var inc1 = // ...

聲明然后初始化一個變量,inc1變量的類型和初始由注釋掉的部分決定,所以:

var inc1 = func(x int) int { return x + 1 }

定義了一個函數(shù)(沒有名字),其代碼如下所示。然后將該函數(shù)分配給變量作為其初始值,因此變量的隱含類型func (int) intor function 接受一個 type 的參數(shù)int并返回一個 type 的值int。

創(chuàng)建變量后,您現(xiàn)在可以調用當前存儲在該變量中的函數(shù):

func callit(arg int) {

    result := inc1(arg)

    // ... do something with the result ...

}

或者您可以為變量分配一個新值,例如:


func overwrite() {

    inc1 = func(a int) int { return a * 2 } // name `inc1` is now misleading

}

因為inc2是一個函數(shù),你不能重新給它賦新值:它只是一個函數(shù),不是變量。


1請注意,帶有初始化的變量聲明可以使用“短聲明”形式:


func f() {

    v := 3

    // ...

 }

我們省略了類型,只說“使用表達式的類型來確定聲明的類型”。這聲明并初始化變量。短聲明只能出現(xiàn)在塊范圍內,因此它們必須在某個函數(shù)內。除了省略關鍵字外,它們不會做任何你通過包含關鍵字或有時包含多個關鍵字var無法做到的事情:varvar


    result, err := doit()

可能需要:


    var result someType

    var err error

    result, err = doit()

在不使用簡短聲明形式編寫時。


查看完整回答
反對 回復 2022-12-13
  • 1 回答
  • 0 關注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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