1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一篇文章帶你了解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ù)可以將重復的,或者特定功能的,封裝成一個方便調用的東西。

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

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

        代碼

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

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


        函數(shù)使用

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

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

        語法

        在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)}

        結果

        調用函數(shù)

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

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

        注:如果函數(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) //結果:[666 雙擊 ok 哦耶] fmt.Printf("%T\n", content) //結果:[]string,是切片類型 fmt.Println("我是"+name, "我說了:") //循環(huán)切片 for _, v := range content { fmt.Println(v) }
        }
        func main() { //函數(shù)名+括號調用函數(shù) say("張三", "666", "雙擊", "ok""哦耶") //結果:我終于會說話了...}

        結果如圖所示

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

        函數(shù)的返回值

        返回值是一個的

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

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

        //返回值是多個的,需要用括號括起來func say2() (int, string) {  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)}

        結果

        總結

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

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

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

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

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

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

        瀏覽 38
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩无码综合 | 神马午夜伦理影院 | 我爱avav色av爱avav亚洲 | 大香蕉伊久 | www拍拍视频 | 大鸡吧日逼| 国产人妻精品 | 国产免费一区二区三区最新不卡 | 美女被艹视频 | 久久三级网站 |