成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章帶你了解Go語言基礎之函數(上篇)

開發 后端
這次咱們繼續學習Go基礎之函數叭。

[[348209]]

 前言
Hey,大家好呀,我是星期八,這次咱們繼續學習Go基礎之函數叭。

 

為什么需要函數
函數,在所有編程語言中都叫函數,Java,PHP,Python,JS等,統一都叫函數。

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

注:在Go中,函數是支持閉包的。

在沒有使用函數時
代碼

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

使用函數后
將相同功能封裝成函數。

  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("關閉 %s 文件", filename)) 
  9. func main() { 
  10.     //將相同功能封裝成函數 
  11.     w_file("a.txt", "愛我中華"
  12.     w_file("b.txt", "中國威武"

上述代碼執行的結果都如下

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

 

函數使用
函數名命名規則
函數命名盡量以駝峰命名,例如:getName,connectData等。

語法
在Go中,定義函數語言用到func關鍵字。

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

無參數,無返回值

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

有參數,無返回值

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

有或者無參數,有返回值

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

main函數

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

結果

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

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

函數參數特性
在Go中,如果函數參數都是統一類型,可以這樣寫。

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

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

函數的...參數
...參數,也叫可變長參數,有點像Python中的*args。

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

...參數需要放在最后面。

代碼

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

結果如圖所示

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

函數的返回值
返回值是一個的

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

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

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

返回值是命名的

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

main函數

  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) 

結果

總結
上述我們學習了Go基礎之函數。

責任編輯:姜華 來源: Go語言進階學習
相關推薦

2020-12-07 05:59:02

語言Go接口

2021-10-30 10:43:04

語言Go函數

2021-11-03 10:02:07

Go基礎函數

2020-10-22 08:33:22

Go語言

2020-11-11 10:52:54

Go語言C語言

2020-11-05 09:58:16

Go語言Map

2022-02-16 10:03:06

對象接口代碼

2021-10-09 07:10:31

Go語言基礎

2022-04-27 10:01:43

切片Go封裝

2020-10-23 08:38:19

Go語言

2020-12-09 09:59:32

Go語言技術

2020-12-30 09:04:32

Go語言TCPUDP

2020-12-27 10:15:44

Go語言channel管道

2020-10-22 11:15:47

Go語言變量

2021-09-29 10:00:07

Go語言基礎

2021-10-13 10:00:52

Go語言基礎

2021-10-16 10:17:51

Go語言數據類型

2020-10-27 11:08:01

JavaScript

2020-12-23 08:39:11

Go語言基礎技術

2023-10-10 15:29:36

JavaScript開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产yw851.c免费观看网站 | 久久综合一区二区 | 国产91精品网站 | 国产精品久久久久999 | 免费在线观看一区二区三区 | 日本手机看片 | 欧美视频二区 | 国产精品成人在线观看 | 国产乱码精品1区2区3区 | 国产国拍亚洲精品av | 色在线看| 九九色综合 | 午夜免费视频 | 亚洲精品在线视频 | www.三级| 国产精品欧美一区二区 | 91久久国产综合久久 | 91久久伊人 | 国产日韩欧美在线 | 欧美成人在线网站 | 天堂一区二区三区 | 99精品在线免费观看 | 亚洲国产一区二区三区 | 亚洲综合天堂网 | 激情久久av一区av二区av三区 | 久久久久久高潮国产精品视 | 久久久久亚洲 | 精品日韩一区二区 | 亚洲最大的成人网 | 日韩一区二区三区视频 | 国产乱人伦精品一区二区 | 亚洲精品免费观看 | 色橹橹欧美在线观看视频高清 | 午夜视频一区二区 | 在线观看亚洲精品视频 | 黑人巨大精品欧美一区二区一视频 | 国产精品一区二区久久久久 | 日韩精品在线看 | 久草视频观看 | 一区二区三区高清不卡 | 午夜电影合集 |