<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語言基礎之函數(shù)(上篇)

          共 3412字,需瀏覽 7分鐘

           ·

          2020-11-06 05:28

          點擊上方“Go語言進階學習”,進行關注

          回復“Go語言”即可獲贈Python從入門到進階共10本電子書

          有耳莫洗潁川水,有口莫食首陽蕨。

          前言

          Hey,大家好呀,我是星期八,這次咱們繼續(xù)學習Go基礎之函數(shù)叭。


          為什么需要函數(shù)

          函數(shù),在所有編程語言中都叫函數(shù),Java,PHP,Python,JS等,統(tǒng)一都叫函數(shù)。

          函數(shù)的作用

          一般是這樣形容的:函數(shù)可以將重復的,或者特定功能的,封裝成一個方便調(diào)用的東西。

          注:在Go中,函數(shù)是支持閉包的。

          在沒有使用函數(shù)時

          代碼

          package main
          import "fmt"
          func main() { //模擬一個打開文件,寫入一行內(nèi)容進入文件,在關閉文件的功能 var file_name = "a.txt" //文件名 var w_content = "愛我中華" //寫入的內(nèi)容 fmt.Println(fmt.Sprintf("打開 %s 文件",file_name)) fmt.Println(fmt.Sprintf("向 %s 文件寫入了 %s ", file_name, w_content)) fmt.Println(fmt.Sprintf("關閉 %s 文件",file_name))
          //如果再再向其他文件寫入內(nèi)容,還需要復制一次
          var file_name2 = "b.txt" //文件名 var w_content2 = "中國威武" //寫入的內(nèi)容 fmt.Println(fmt.Sprintf("打開 %s 文件",file_name2)) fmt.Println(fmt.Sprintf("向 %s 文件寫入了 %s ", file_name2, w_content2)) fmt.Println(fmt.Sprintf("關閉 %s 文件",file_name2))}

          使用函數(shù)后

          將相同功能封裝成函數(shù)。

          package main
          import "fmt"
          func w_file(filename string, w_content string) { fmt.Println(fmt.Sprintf("打開 %s 文件", filename)) fmt.Println(fmt.Sprintf("向 %s 文件寫入了 %s ", filename, w_content)) fmt.Println(fmt.Sprintf("關閉 %s 文件", filename))}func main() { //將相同功能封裝成函數(shù) w_file("a.txt""愛我中華") w_file("b.txt""中國威武")}

          上述代碼執(zhí)行的結(jié)果都如下

          ps:但是可以明顯看到,使用函數(shù)將相同功能抽出來,代碼會變的簡單,整潔。


          函數(shù)使用

          函數(shù)名命名規(guī)則

          函數(shù)命名盡量以駝峰命名,例如:getNameconnectData等。

          語法

          在Go中,定義函數(shù)語言用到func關鍵字。

          func 函數(shù)名([參數(shù)1 參數(shù)類型1,參數(shù)2 參數(shù)類型2,...]) [(返回值 返回值類型,...)]{    邏輯代碼}//中括號表示可選參數(shù)

          無參數(shù),無返回值

          package main
          import "fmt"
          func say1() { fmt.Println("我終于會說話了...")}

          有參數(shù),無返回值

          func say2(c string) {    fmt.Println("我終于會說" + c + "了")}

          有或者無參數(shù),有返回值

          func say3(c string) (string) {    fmt.Println("我終于會說" + c + "了")    return "哦耶"}

          main函數(shù)

          func main() {    say1()    say2("你好哇")    result := say3("你好哇")    fmt.Printf(result)}

          結(jié)果

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

          函數(shù)名+括號調(diào)用函數(shù),如果有參數(shù)傳入相關參數(shù)即可。

          package main
          import "fmt"
          func say() string{ fmt.Println("我終于會說話了...") return ""}
          func main() { //函數(shù)名+括號調(diào)用函數(shù) say() //結(jié)果:我終于會說話了...}

          注:如果函數(shù)有返回值,可以不接收。

          函數(shù)參數(shù)特性

          在Go中,如果函數(shù)參數(shù)都是統(tǒng)一類型,可以這樣寫。

          //arg1, arg2, arg3, arg4參數(shù)類型都是stringfunc say(arg1, arg2, arg3, arg4 string) {  fmt.Println("我終于會說話了...")}
          //arg1,arg2參數(shù)是int類型,arg4,arg4是string類型,func say(arg1, arg2, int, arg3, arg4 string) { //表示arg1, arg2, arg3, arg4參數(shù)類型都是string fmt.Println("我終于會說話了...")}

          大概意思就是,如果參數(shù)不寫類型,會以后面碰到的類型為準。

          函數(shù)的...參數(shù)

          ...參數(shù),也叫可變長參數(shù),有點像Python中的*args

          功能是當不知道接收多少個參數(shù)時,接收多的參數(shù)會放在...中。

          ...參數(shù)需要放在最后面。

          代碼

          package main
          import "fmt"
          func say(name string, content ...string) { fmt.Println(content) //結(jié)果:[666 雙擊 ok 哦耶] fmt.Printf("%T\n", content) //結(jié)果:[]string,是切片類型 fmt.Println("我是"+name, "我說了:") //循環(huán)切片 for _, v := range content { fmt.Println(v) }
          }
          func main() { //函數(shù)名+括號調(diào)用函數(shù) say("張三""666""雙擊""ok""哦耶") //結(jié)果:我終于會說話了...}

          結(jié)果如圖所示

          注:參數(shù)是...類型的,他的值是一個切片類型。

          函數(shù)的返回值

          返回值是一個的

          package main
          import "fmt"
          //返回值是一個func say1() string { return "ok"}

          返回值是多個的,需要用括號括起來

          //返回值是多個的,需要用括號括起來func say2() (intstring) {  return 1"ok"}

          返回值是命名的

          //返回值是命名的,不管是多個返回值還是一個返回值,都需要括號//如果是命名返回值,需要在邏輯代碼中,將變量賦值func say3() (a int, b string) {  //邏輯代碼  a = 18  b = "666"  /*    直接return即可,不需要retrun a,b    return的默認就是 a 和 b    不用跟上述返回一樣,返回具體值  */  return}

          main函數(shù)

          func main() {  s := say1()  fmt.Println(s)  a1, b1 := say2()  fmt.Println(a1, b1)  a2, b2 := say3()  fmt.Println(a2, b2)}

          結(jié)果

          總結(jié)

          上述我們學習了Go基礎之函數(shù)。如果在操作過程中有任何問題,記得下面討論區(qū)留言,我們看到會第一時間解決問題。

          我是碼農(nóng)星期八,如果覺得還不錯,記得動手點贊一下哈。感謝你的觀看。

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

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

          想加入學習群請在后臺回復【入群

          萬水千山總是情,點個【在看】行不行

          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  欧美一级片在线看 | 免费播放一区二区三区四区 | 俺来也,俺去也 | 蜜乳视频在线观看 | 日日无码视频 |