<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Go 語(yǔ)言基礎(chǔ)-函數(shù)

          共 3143字,需瀏覽 7分鐘

           ·

          2022-05-13 04:54

          點(diǎn)擊上方“Go語(yǔ)言進(jìn)階學(xué)習(xí)”,進(jìn)行關(guān)注

          回復(fù)“Go語(yǔ)言”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          山隨平野盡,江入大荒流。

          你好,我是四哥。


          上篇文章我們講了常量,今天來學(xué)習(xí)下函數(shù)

          什么是函數(shù)?

          函數(shù)是執(zhí)行特定任務(wù)的代碼塊。函數(shù)接受輸入,對(duì)輸入執(zhí)行一些計(jì)算,然后生成輸出。

          函數(shù)聲明

          Go 語(yǔ)言函數(shù)聲明語(yǔ)法如下:

          func?functionname(parametername?type)?returntype?{
          ?//function?body
          }

          函數(shù)聲明以 func 關(guān)鍵字開頭,后跟函數(shù)名。中括號(hào) () 里面指定參數(shù),后跟函數(shù)的返回類型。指定參數(shù)的語(yǔ)法是參數(shù)名稱后面跟參數(shù)類型,可以指定任意數(shù)量的參數(shù),像下面這樣:

          (parameter1?type,?parameter2?type)

          函數(shù)的主體部分放在大括號(hào)里面。

          參數(shù)和返回值都是可選的,因此下面這種聲明方式也是有效的函數(shù)聲明:

          func?functionname()?{
          }

          簡(jiǎn)單函數(shù)

          我們來寫一個(gè)函數(shù),函數(shù)的參數(shù)是商品單價(jià)和商品數(shù)量,實(shí)現(xiàn)計(jì)算商品總價(jià)并返回。

          func?calculateBill(price?int,?no?int)?int?{
          ????var?totalPrice?=?price?*?no
          ????return?totalPrice
          }

          上面函數(shù)的輸入?yún)?shù)是 price 和 no,都是 int 型,兩者的乘積賦值給 totalPrice 并作為返回值返回,totalPrice 也是 int 型。

          如果連續(xù)的參數(shù)都是相同的類型,我們可以避免每個(gè)參數(shù)都指定類型,只需要指定最后一個(gè)參數(shù)的類型即可,比如 price int, no int 就可以寫成 price, no int,所以上面的函數(shù)可以修改成:

          func?calculateBill(price,?no?int)?int?{
          ????var?totalPrice?=?price?*?no
          ????return?totalPrice
          }

          現(xiàn)在我們已經(jīng)寫好了一個(gè)函數(shù),我們嘗試來調(diào)用這個(gè)函數(shù)。調(diào)用函數(shù)的語(yǔ)法是 functionname(parameters),上面的函數(shù)就可以像下面這樣調(diào)用:

          calculateBill(10,?5)

          下面是完成的程序:

          package?main

          import?(
          ????"fmt"
          )

          func?calculateBill(price,?no?int)?int?{
          ????var?totalPrice?=?price?*?no
          ????return?totalPrice
          }

          func?main()?{
          ????price,?no?:=?90,?6
          ????totalPrice?:=?calculateBill(price,?no)
          ????fmt.Println("Total?price?is",?totalPrice)
          }

          執(zhí)行[1]

          上面的代碼輸出:

          Total?price?is?540

          多值返回

          Go 語(yǔ)言是允許函數(shù)返回多個(gè)值的。我們來寫一個(gè) rectProps() 函數(shù),該函數(shù)的參數(shù)是長(zhǎng)方形的 length 和 width,返回長(zhǎng)方形的 area(面積) 和 perimeter(周長(zhǎng))。

          package?main

          import?(
          ????"fmt"
          )

          func?rectProps(length,?width?float64)(float64,?float64)?{
          ????var?area?=?length?*?width
          ????var?perimeter?=?(length?+?width)?*?2
          ????return?area,?perimeter
          }

          func?main()?{
          ?????area,?perimeter?:=?rectProps(10.8,?5.6)
          ????fmt.Printf("Area?%f?Perimeter?%f",?area,?perimeter)
          }

          執(zhí)行[2]

          如果一個(gè)函數(shù)返回多個(gè)值則需要使用 () 指定,比如:

          func?rectProps(length,?width?float64)(float64,?float64)

          該函數(shù)有兩個(gè) float64 參數(shù) length 和 width,也返回兩個(gè) float64 類型的值。

          上面的代碼輸出:

          Area?60.480000?Perimeter?32.800000

          命名返回值

          可以從函數(shù)返回命名值。如果返回值被命名,則可以認(rèn)為它在函數(shù)的第一行被聲明為變量,并初始化為相應(yīng)類型的零值。

          上面的 rectProps() 函數(shù)可以使用命名的返回值重寫:

          func?rectProps(length,?width?float64)(area,?perimeter?float64)?{
          ????area?=?length?*?width
          ????perimeter?=?(length?+?width)?*?2
          ????return?//no?explicit?return?value
          }

          area 和 perimeter 是函數(shù)中命名的返回值。

          需要注意的是,函數(shù)里的 return 語(yǔ)句沒有返回任何值。由于在函數(shù)聲明中將 area 和 perimeter 指定為返回值,因此當(dāng)遇到 return 語(yǔ)句時(shí),它們會(huì)自動(dòng)從函數(shù)中返回。

          空白符

          Go 語(yǔ)言里面,下劃線 _ 可以被當(dāng)做空白符使用。它可以用來代替任何類型的任何值,讓我們看看這個(gè)空白標(biāo)識(shí)符有什么用。

          rectProps() 函數(shù)返回長(zhǎng)方形的面積和周長(zhǎng)。如果我們只想要面積,而不想要周長(zhǎng)那該怎么辦呢?這時(shí)候空百符 _ 就可以派上用場(chǎng)了。

          package?main

          import?(
          ????"fmt"
          )

          func?rectProps(length,?width?float64)?(float64,?float64)?{
          ????var?area?=?length?*?width
          ????var?perimeter?=?(length?+?width)?*?2
          ????return?area,?perimeter
          }
          func?main()?{
          ????area,?_?:=?rectProps(10.8,?5.6)?//?perimeter?is?discarded
          ????fmt.Printf("Area?%f?",?area)
          }

          執(zhí)行[3]

          上面代碼的第 13 行,我們接收了函數(shù)返回的 area,并使用 _ 忽略了 perimeter。

          https://golangbot.com/functions/
          作者:Naveen R

          參考資料

          [1]

          執(zhí)行: https://play.golang.org/p/FtjhPcx3ySa

          [2]

          執(zhí)行: https://play.golang.org/p/qAftE_yke_

          [3]

          執(zhí)行: https://play.golang.org/p/IkugSH1jIt



          推薦閱讀:
          Go 語(yǔ)言基礎(chǔ)-常量

          資料下載

          點(diǎn)擊下方卡片關(guān)注公眾號(hào),發(fā)送特定關(guān)鍵字獲取對(duì)應(yīng)精品資料!

          • 回復(fù)「電子書」,獲取入門、進(jìn)階 Go 語(yǔ)言必看書籍。

          • 回復(fù)「視頻」,獲取價(jià)值 5000 大洋的視頻資料,內(nèi)含實(shí)戰(zhàn)項(xiàng)目(不外傳)!

          • 回復(fù)「路線」,獲取最新版 Go 知識(shí)圖譜及學(xué)習(xí)、成長(zhǎng)路線圖。

          • 回復(fù)「面試題」,獲取四哥精編的 Go 語(yǔ)言面試題,含解析。

          • 回復(fù)「后臺(tái)」,獲取后臺(tái)開發(fā)必看 10 本書籍。



          對(duì)了,看完文章,記得點(diǎn)擊下方的卡片。關(guān)注我哦~???????


          ------------------?End?-------------------

          歡迎大家點(diǎn)贊轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

          瀏覽 42
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区二区高清无码 | 婷婷五月天小说 | 特级欧美AAAAAA片免费观看 | 亚洲少妇在线观看 | 亚洲天堂视频在线播放 |