溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Go語言基礎(chǔ)函數(shù)有什么作用

發(fā)布時間:2021-06-18 09:22:26 來源:億速云 閱讀:149 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“Go語言基礎(chǔ)函數(shù)有什么作用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Go語言基礎(chǔ)函數(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)容進入文件,在關(guān)閉文件的功能     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("關(guān)閉 %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("關(guān)閉 %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("關(guān)閉 %s 文件", filename)) } func main() {     //將相同功能封裝成函數(shù)     w_file("a.txt", "愛我中華")     w_file("b.txt", "中國威武") }

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

Go語言基礎(chǔ)函數(shù)有什么作用

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

函數(shù)使用
函數(shù)名命名規(guī)則
函數(shù)命名盡量以駝峰命名,例如:getName,connectData等。

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

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é)果

Go語言基礎(chǔ)函數(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ù)類型都是string func 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é)果如圖所示

Go語言基礎(chǔ)函數(shù)有什么作用

注:參數(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) }

結(jié)果

Go語言基礎(chǔ)函數(shù)有什么作用

到此,相信大家對“Go語言基礎(chǔ)函數(shù)有什么作用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI