日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一篇文章帶你了解Go語言基礎(chǔ)之函數(shù)(上篇)

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

創(chuàng)新互聯(lián)的客戶來自各行各業(yè),為了共同目標(biāo),我們?cè)诠ぷ魃厦芮信浜?,從?chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對(duì)我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺(tái)開發(fā)。

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

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

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

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

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     //模擬一個(gè)打開文件,寫入一行內(nèi)容進(jìn)入文件,在關(guān)閉文件的功能 
  7.     var file_name = "a.txt" //文件名 
  8.     var w_content = "愛我中華"  //寫入的內(nèi)容 
  9.     fmt.Println(fmt.Sprintf("打開 %s 文件",file_name)) 
  10.     fmt.Println(fmt.Sprintf("向 %s 文件寫入了 %s ", file_name, w_content)) 
  11.     fmt.Println(fmt.Sprintf("關(guān)閉 %s 文件",file_name)) 
  12.  
  13.     //如果再再向其他文件寫入內(nèi)容,還需要復(fù)制一次 
  14.  
  15.     var file_name2 = "b.txt" //文件名 
  16.     var w_content2 = "中國威武"  //寫入的內(nèi)容 
  17.     fmt.Println(fmt.Sprintf("打開 %s 文件",file_name2)) 
  18.     fmt.Println(fmt.Sprintf("向 %s 文件寫入了 %s ", file_name2, w_content2)) 
  19.     fmt.Println(fmt.Sprintf("關(guān)閉 %s 文件",file_name2)) 

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

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func w_file(filename string, w_content string) { 
  6.     fmt.Println(fmt.Sprintf("打開 %s 文件", filename)) 
  7.     fmt.Println(fmt.Sprintf("向 %s 文件寫入了 %s ", filename, w_content)) 
  8.     fmt.Println(fmt.Sprintf("關(guān)閉 %s 文件", filename)) 
  9. func main() { 
  10.     //將相同功能封裝成函數(shù) 
  11.     w_file("a.txt", "愛我中華") 
  12.     w_file("b.txt", "中國威武") 

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

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

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

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

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

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

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func say1() { 
  6.     fmt.Println("我終于會(huì)說話了...") 

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

 
 
 
 
  1. func say2(c string) { 
  2.     fmt.Println("我終于會(huì)說" + c + "了") 

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

 
 
 
 
  1. func say3(c string) (string) { 
  2.     fmt.Println("我終于會(huì)說" + c + "了") 
  3.     return "哦耶" 

main函數(shù)

 
 
 
 
  1. func main() { 
  2.     say1() 
  3.     say2("你好哇") 
  4.     result := say3("你好哇") 
  5.     fmt.Printf(result) 

結(jié)果

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func say() string{ 
  6.     fmt.Println("我終于會(huì)說話了...") 
  7.     return "" 
  8.  
  9. func main() { 
  10.     //函數(shù)名+括號(hào)調(diào)用函數(shù) 
  11.     say() //結(jié)果:我終于會(huì)說話了... 

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

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

 
 
 
 
  1. //arg1, arg2, arg3, arg4參數(shù)類型都是string 
  2. func say(arg1, arg2, arg3, arg4 string) { 
  3.   fmt.Println("我終于會(huì)說話了...") 
  4.  
  5. //arg1,arg2參數(shù)是int類型,arg4,arg4是string類型, 
  6. func say(arg1, arg2, int, arg3, arg4 string) { 
  7.   //表示arg1, arg2, arg3, arg4參數(shù)類型都是string 
  8.   fmt.Println("我終于會(huì)說話了...") 

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

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

功能是當(dāng)不知道接收多少個(gè)參數(shù)時(shí),接收多的參數(shù)會(huì)放在...中。

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

代碼

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func say(name string, content ...string) { 
  6.     fmt.Println(content)        //結(jié)果:[666 雙擊 ok 哦耶] 
  7.   fmt.Printf("%T\n", content) //結(jié)果:[]string,是切片類型 
  8.   fmt.Println("我是"+name, "我說了:") 
  9.   //循環(huán)切片 
  10.   for _, v := range content { 
  11.     fmt.Println(v) 
  12.   } 
  13.  
  14.  
  15. func main() { 
  16.   //函數(shù)名+括號(hào)調(diào)用函數(shù) 
  17.   say("張三", "666", "雙擊", "ok", "哦耶") //結(jié)果:我終于會(huì)說話了... 

結(jié)果如圖所示

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

函數(shù)的返回值
返回值是一個(gè)的

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. //返回值是一個(gè) 
  6. func say1() string { 
  7.   return "ok" 

返回值是多個(gè)的,需要用括號(hào)括起來

 
 
 
 
  1. //返回值是多個(gè)的,需要用括號(hào)括起來 
  2. func say2() (int, string) { 
  3.   return 1, "ok" 

返回值是命名的

 
 
 
 
  1. //返回值是命名的,不管是多個(gè)返回值還是一個(gè)返回值,都需要括號(hào) 
  2. //如果是命名返回值,需要在邏輯代碼中,將變量賦值 
  3. func say3() (a int, b string) { 
  4.   //邏輯代碼 
  5.   a = 18 
  6.   b = "666" 
  7.   /* 
  8.     直接return即可,不需要retrun a,b 
  9.     return的默認(rèn)就是 a 和 b 
  10.     不用跟上述返回一樣,返回具體值 
  11.   */ 
  12.   return 

main函數(shù)

 
 
 
 
  1. func main() { 
  2.   s := say1() 
  3.   fmt.Println(s) 
  4.   a1, b1 := say2() 
  5.   fmt.Println(a1, b1) 
  6.   a2, b2 := say3() 
  7.   fmt.Println(a2, b2) 

結(jié)果

總結(jié)
上述我們學(xué)習(xí)了Go基礎(chǔ)之函數(shù)。


當(dāng)前文章:一篇文章帶你了解Go語言基礎(chǔ)之函數(shù)(上篇)
網(wǎng)站地址:http://www.dlmjj.cn/article/dpdhcod.html