欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          go語(yǔ)言調(diào)用函數(shù)方法是什么

          在go語(yǔ)言中,定義了函數(shù)之后,我們可以通過(guò)“函數(shù)名()”的方式調(diào)用函數(shù),語(yǔ)法“返回值變量列表 = 函數(shù)名(參數(shù)列表)”。當(dāng)“()”中包含多個(gè)參數(shù)時(shí),參數(shù)變量以逗號(hào)分隔,尾部無(wú)須以分號(hào)結(jié)尾;“返回值變量列表”中,多個(gè)返回值使用逗號(hào)分隔。

          go語(yǔ)言調(diào)用函數(shù)方法是什么

          php入門到就業(yè)線上直播課:進(jìn)入學(xué)習(xí)
          Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用

          本教程操作環(huán)境:windows7系統(tǒng)、GO 1.18版本、Dell G3電腦。

          函數(shù)構(gòu)成了代碼執(zhí)行的邏輯結(jié)構(gòu),在Go語(yǔ)言中,函數(shù)的基本組成為:關(guān)鍵字 func、函數(shù)名、參數(shù)列表、返回值、函數(shù)體和返回語(yǔ)句,每一個(gè)程序都包含很多的函數(shù),函數(shù)是基本的代碼塊。

          因?yàn)镚o語(yǔ)言是編譯型語(yǔ)言,所以函數(shù)編寫的順序是無(wú)關(guān)緊要的,鑒于可讀性的需求,最好把 main() 函數(shù)寫在文件的前面,其他函數(shù)按照一定邏輯順序進(jìn)行編寫(例如函數(shù)被調(diào)用的順序)。

          編寫多個(gè)函數(shù)的主要目的是將一個(gè)需要很多行代碼的復(fù)雜問(wèn)題分解為一系列簡(jiǎn)單的任務(wù)來(lái)解決,而且,同一個(gè)任務(wù)(函數(shù))可以被多次調(diào)用,有助于代碼重用(事實(shí)上,好的程序是非常注意 DRY 原則的,即不要重復(fù)你自己(Don't Repeat Yourself),意思是執(zhí)行特定任務(wù)的代碼只能在程序里面出現(xiàn)一次)。

          當(dāng)函數(shù)執(zhí)行到代碼塊最后一行 } 之前或者 return 語(yǔ)句的時(shí)候會(huì)退出,其中 return 語(yǔ)句可以帶有零個(gè)或多個(gè)參數(shù),這些參數(shù)將作為返回值供調(diào)用者使用,簡(jiǎn)單的 return 語(yǔ)句也可以用來(lái)結(jié)束 for 的死循環(huán),或者結(jié)束一個(gè)協(xié)程(goroutine)。

          Go語(yǔ)言里面擁三種類型的函數(shù):

          • 普通的帶有名字的函數(shù)
          • 匿名函數(shù)或者 lambda 函數(shù)
          • 方法

          普通函數(shù)聲明(定義)

          函數(shù)聲明包括函數(shù)名、形式參數(shù)列表、返回值列表(可省略)以及函數(shù)體。

          func 函數(shù)名(形式參數(shù)列表)(返回值列表){     函數(shù)體 }
          登錄后復(fù)制

          形式參數(shù)列表描述了函數(shù)的參數(shù)名以及參數(shù)類型,這些參數(shù)作為局部變量,其值由參數(shù)調(diào)用者提供,返回值列表描述了函數(shù)返回值的變量名以及類型,如果函數(shù)返回一個(gè)無(wú)名變量或者沒(méi)有返回值,返回值列表的括號(hào)是可以省略的。

          調(diào)用函數(shù)

          函數(shù)在定義后,可以通過(guò)調(diào)用的方式,讓當(dāng)前代碼跳轉(zhuǎn)到被調(diào)用的函數(shù)中進(jìn)行執(zhí)行,調(diào)用前的函數(shù)局部變量都會(huì)被保存起來(lái)不會(huì)丟失,被調(diào)用的函數(shù)運(yùn)行結(jié)束后,恢復(fù)到調(diào)用函數(shù)的下一行繼續(xù)執(zhí)行代碼,之前的局部變量也能繼續(xù)訪問(wèn)。

          函數(shù)內(nèi)的局部變量只能在函數(shù)體中使用,函數(shù)調(diào)用結(jié)束后,這些局部變量都會(huì)被釋放并且失效。

          Go語(yǔ)言的函數(shù)調(diào)用格式如下:

          返回值變量列表 := 函數(shù)名(參數(shù)列表)
          登錄后復(fù)制

          下面是對(duì)各個(gè)部分的說(shuō)明:

          • 函數(shù)名:需要調(diào)用的函數(shù)名。
          • 參數(shù)列表:參數(shù)變量以逗號(hào)分隔,尾部無(wú)須以分號(hào)結(jié)尾。
          • 返回值變量列表:多個(gè)返回值使用逗號(hào)分隔。

          例如,加法函數(shù)調(diào)用樣式如下:

          result := add(1,1)
          登錄后復(fù)制

          函數(shù)的返回值

          Go語(yǔ)言支持多返回值,多返回值能方便地獲得函數(shù)執(zhí)行后的多個(gè)返回參數(shù),Go語(yǔ)言經(jīng)常使用多返回值中的最后一個(gè)返回參數(shù)返回函數(shù)執(zhí)行中可能發(fā)生的錯(cuò)誤,示例代碼如下:

          復(fù)制純文本復(fù)制
          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          conn, err := connectToNetwork()
          登錄后復(fù)制

          登錄后復(fù)制

          在這段代碼中,connectToNetwork 返回兩個(gè)參數(shù),conn 表示連接對(duì)象,err 返回錯(cuò)誤信息。

          其它編程語(yǔ)言中函數(shù)的返回值

          • C/C++ 語(yǔ)言中只支持一個(gè)返回值,在需要返回多個(gè)數(shù)值時(shí),則需要使用結(jié)構(gòu)體返回結(jié)果,或者在參數(shù)中使用指針變量,然后在函數(shù)內(nèi)部修改外部傳入的變量值,實(shí)現(xiàn)返回計(jì)算結(jié)果,C++ 語(yǔ)言中為了安全性,建議在參數(shù)返回?cái)?shù)據(jù)時(shí)使用“引用”替代指針。
          • C# 語(yǔ)言也沒(méi)有多返回值特性,C# 語(yǔ)言后期加入的 ref 和 out 關(guān)鍵字能夠通過(guò)函數(shù)的調(diào)用參數(shù)獲得函數(shù)體中修改的數(shù)據(jù)。
          • lua 語(yǔ)言沒(méi)有指針,但支持多返回值,在大塊數(shù)據(jù)使用時(shí)方便很多。

          Go語(yǔ)言既支持安全指針,也支持多返回值,因此在使用函數(shù)進(jìn)行邏輯編寫時(shí)更為方便。

          1) 同一種類型返回值

          如果返回值是同一種類型,則用括號(hào)將多個(gè)返回值類型括起來(lái),用逗號(hào)分隔每個(gè)返回值的類型。

          使用 return 語(yǔ)句返回時(shí),值列表的順序需要與函數(shù)聲明的返回值類型一致,示例代碼如下:

          復(fù)制純文本復(fù)制
          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          func typedTwoValues() (int, int) {     return 1, 2 } func main() {     a, b := typedTwoValues()     fmt.Println(a, b) }
          登錄后復(fù)制

          登錄后復(fù)制

          代碼輸出結(jié)果:

          1 2
          登錄后復(fù)制

          純類型的返回值對(duì)于代碼可讀性不是很友好,特別是在同類型的返回值出現(xiàn)時(shí),無(wú)法區(qū)分每個(gè)返回參數(shù)的意義。

          2) 帶有變量名的返回值

          Go語(yǔ)言支持對(duì)返回值進(jìn)行命名,這樣返回值就和參數(shù)一樣擁有參數(shù)變量名和類型。

          命名的返回值變量的默認(rèn)值為類型的默認(rèn)值,即數(shù)值為 0,字符串為空字符串,布爾為 false、指針為 nil 等。

          下面代碼中的函數(shù)擁有兩個(gè)整型返回值,函數(shù)聲明時(shí)將返回值命名為 a 和 b,因此可以在函數(shù)體中直接對(duì)函數(shù)返回值進(jìn)行賦值,在命名的返回值方式的函數(shù)體中,在函數(shù)結(jié)束前需要顯式地使用 return 語(yǔ)句進(jìn)行返回,代碼如下:

          復(fù)制純文本復(fù)制
          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          func namedRetValues() (a, b int) {     a = 1     b = 2     return }
          登錄后復(fù)制

          登錄后復(fù)制

          代碼說(shuō)明如下:

          • 第 1 行,對(duì)兩個(gè)整型返回值進(jìn)行命名,分別為 a 和 b。
          • 第 3 行和第 4 行,命名返回值的變量與這個(gè)函數(shù)的布局變量的效果一致,可以對(duì)返回值進(jìn)行賦值和值獲取。
          • 第 6 行,當(dāng)函數(shù)使用命名返回值時(shí),可以在 return 中不填寫返回值列表,如果填寫也是可行的,下面代碼的執(zhí)行效果和上面代碼的效果一樣。

            復(fù)制純文本復(fù)制
            登錄后復(fù)制

            登錄后復(fù)制

            登錄后復(fù)制

            登錄后復(fù)制

            登錄后復(fù)制

            func namedRetValues() (a, b int) {     a = 1     return a, 2 }
            登錄后復(fù)制

            登錄后復(fù)制

          提示

          同一種類型返回值和命名返回值兩種形式只能二選一,混用時(shí)將會(huì)發(fā)生編譯錯(cuò)誤,例如下面的代碼:

          復(fù)制純文本復(fù)制
          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          登錄后復(fù)制

          func namedRetValues() (a, b int, int)
          登錄后復(fù)制

          登錄后復(fù)制

          編譯報(bào)錯(cuò)提示:

          mixed named and unnamed function parameters
          登錄后復(fù)制

          意思是:在函數(shù)參數(shù)中混合使用了命名和非命名參數(shù)。

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)