成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

go語言調用函數方法是什么

在go語言中,定義了函數之后,我們可以通過“函數名()”的方式調用函數,語法“返回值變量列表 = 函數名(參數列表)”。當“()”中包含多個參數時,參數變量以逗號分隔,尾部無須以分號結尾;“返回值變量列表”中,多個返回值使用逗號分隔。

go語言調用函數方法是什么

php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

本教程操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

函數構成了代碼執行的邏輯結構,在Go語言中,函數的基本組成為:關鍵字 func、函數名、參數列表、返回值、函數體和返回語句,每一個程序都包含很多的函數,函數是基本的代碼塊。

因為Go語言是編譯型語言,所以函數編寫的順序是無關緊要的,鑒于可讀性的需求,最好把 main() 函數寫在文件的前面,其他函數按照一定邏輯順序進行編寫(例如函數被調用的順序)。

編寫多個函數的主要目的是將一個需要很多行代碼的復雜問題分解為一系列簡單的任務來解決,而且,同一個任務(函數)可以被多次調用,有助于代碼重用(事實上,好的程序是非常注意 DRY 原則的,即不要重復你自己(Don't Repeat Yourself),意思是執行特定任務的代碼只能在程序里面出現一次)。

當函數執行到代碼塊最后一行 } 之前或者 return 語句的時候會退出,其中 return 語句可以帶有零個或多個參數,這些參數將作為返回值供調用者使用,簡單的 return 語句也可以用來結束 for 的死循環,或者結束一個協程(goroutine)。

Go語言里面擁三種類型的函數:

  • 普通的帶有名字的函數
  • 匿名函數或者 lambda 函數
  • 方法

普通函數聲明(定義)

函數聲明包括函數名、形式參數列表、返回值列表(可省略)以及函數體。

func 函數名(形式參數列表)(返回值列表){     函數體 }
登錄后復制

形式參數列表描述了函數的參數名以及參數類型,這些參數作為局部變量,其值由參數調用者提供,返回值列表描述了函數返回值的變量名以及類型,如果函數返回一個無名變量或者沒有返回值,返回值列表的括號是可以省略的。

調用函數

函數在定義后,可以通過調用的方式,讓當前代碼跳轉到被調用的函數中進行執行,調用前的函數局部變量都會被保存起來不會丟失,被調用的函數運行結束后,恢復到調用函數的下一行繼續執行代碼,之前的局部變量也能繼續訪問。

函數內的局部變量只能在函數體中使用,函數調用結束后,這些局部變量都會被釋放并且失效。

Go語言的函數調用格式如下:

返回值變量列表 := 函數名(參數列表)
登錄后復制

下面是對各個部分的說明:

  • 函數名:需要調用的函數名。
  • 參數列表:參數變量以逗號分隔,尾部無須以分號結尾。
  • 返回值變量列表:多個返回值使用逗號分隔。

例如,加法函數調用樣式如下:

result := add(1,1)
登錄后復制

函數的返回值

Go語言支持多返回值,多返回值能方便地獲得函數執行后的多個返回參數,Go語言經常使用多返回值中的最后一個返回參數返回函數執行中可能發生的錯誤,示例代碼如下:

復制純文本復制
登錄后復制

登錄后復制

登錄后復制

登錄后復制

登錄后復制

conn, err := connectToNetwork()
登錄后復制

登錄后復制

在這段代碼中,connectToNetwork 返回兩個參數,conn 表示連接對象,err 返回錯誤信息。

其它編程語言中函數的返回值

  • C/C++ 語言中只支持一個返回值,在需要返回多個數值時,則需要使用結構體返回結果,或者在參數中使用指針變量,然后在函數內部修改外部傳入的變量值,實現返回計算結果,C++ 語言中為了安全性,建議在參數返回數據時使用“引用”替代指針。
  • C# 語言也沒有多返回值特性,C# 語言后期加入的 ref 和 out 關鍵字能夠通過函數的調用參數獲得函數體中修改的數據。
  • lua 語言沒有指針,但支持多返回值,在大塊數據使用時方便很多。

Go語言既支持安全指針,也支持多返回值,因此在使用函數進行邏輯編寫時更為方便。

1) 同一種類型返回值

如果返回值是同一種類型,則用括號將多個返回值類型括起來,用逗號分隔每個返回值的類型。

使用 return 語句返回時,值列表的順序需要與函數聲明的返回值類型一致,示例代碼如下:

復制純文本復制
登錄后復制

登錄后復制

登錄后復制

登錄后復制

登錄后復制

func typedTwoValues() (int, int) {     return 1, 2 } func main() {     a, b := typedTwoValues()     fmt.Println(a, b) }
登錄后復制

登錄后復制

代碼輸出結果:

1 2
登錄后復制

純類型的返回值對于代碼可讀性不是很友好,特別是在同類型的返回值出現時,無法區分每個返回參數的意義。

2) 帶有變量名的返回值

Go語言支持對返回值進行命名,這樣返回值就和參數一樣擁有參數變量名和類型。

命名的返回值變量的默認值為類型的默認值,即數值為 0,字符串為空字符串,布爾為 false、指針為 nil 等。

下面代碼中的函數擁有兩個整型返回值,函數聲明時將返回值命名為 a 和 b,因此可以在函數體中直接對函數返回值進行賦值,在命名的返回值方式的函數體中,在函數結束前需要顯式地使用 return 語句進行返回,代碼如下:

復制純文本復制
登錄后復制

登錄后復制

登錄后復制

登錄后復制

登錄后復制

func namedRetValues() (a, b int) {     a = 1     b = 2     return }
登錄后復制

登錄后復制

代碼說明如下:

  • 第 1 行,對兩個整型返回值進行命名,分別為 a 和 b。
  • 第 3 行和第 4 行,命名返回值的變量與這個函數的布局變量的效果一致,可以對返回值進行賦值和值獲取。
  • 第 6 行,當函數使用命名返回值時,可以在 return 中不填寫返回值列表,如果填寫也是可行的,下面代碼的執行效果和上面代碼的效果一樣。

    復制純文本復制
    登錄后復制

    登錄后復制

    登錄后復制

    登錄后復制

    登錄后復制

    func namedRetValues() (a, b int) {     a = 1     return a, 2 }
    登錄后復制

    登錄后復制

提示

同一種類型返回值和命名返回值兩種形式只能二選一,混用時將會發生編譯錯誤,例如下面的代碼:

復制純文本復制
登錄后復制

登錄后復制

登錄后復制

登錄后復制

登錄后復制

func namedRetValues() (a, b int, int)
登錄后復制

登錄后復制

編譯報錯提示:

mixed named and unnamed function parameters
登錄后復制

意思是:在函數參數中混合使用了命名和非命名參數。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
人妻精品无码一区二区三区| 精品高朝久久久久9999 | 清纯JK校花被啪啪AV免费| 久久99国产精品久久99| 国产精品午夜小视频观看| 超薄丝袜足J好爽在线观看| 中字年轻漂亮的儿媳BD| 亚洲色成人一区二区三区| 久久麻豆成人精品| 精品麻豆国产色欲色欲色欲WWW| 国产精品多P对白交换绿帽| 在卫生间被教官做好爽| 娇妻宾馆被三根粗大的夹击| 在线成人A毛片免费播放| 日本公与丰满熄的| IPHONE欧美高级| 最新精品国偷自产在线下载| 中文字幕AV高清片| 999精产国品一二三产区区| 妺妺窝人体色WWW聚色窝丿| 13小男生GAY自慰脱裤子| 四虎永久在线精品国产馆V视影院| 国产亚洲精久久久久久无码777 | 被黑人的大JJ干得很舒服吗| 性欧美丰满熟妇XXXX性| 黄 色 网 站 在 线 免费| 18禁止看的免费污网站| 午夜精品久久久久久不卡| 国产亚洲精品第一综合麻豆 | 邻居一晚让我高潮3次正常吗| 777亚洲熟妇自拍无码区| 人妻互换一二三区激情视频| 久久无码成人影片| 第九午夜不卡影院| 中文人妻无码一区二区三区在线 | 少妇ⅩXXOOOZZXXHD| 麻花豆传媒剧国产MV在线观看| А√天堂中文在线资源BT在线| 亚洲裸男GAY自慰网站| 日韩欧洲在线高清一区| 天天摸天天碰天天添| 亚洲成A人片77777KKKK| 亚洲AV无码AV日韩AV网站不| 18禁黄网站禁片无遮挡观看AP| 东京热一区二区三区| 精品无码一区二区Av蜜桃| 人妻中出受孕 中文字幕在线| 小SAO货边洗澡边CAO你动漫| 中文字幕日本最新乱码视频| 国产精品色吧国产精品| 欧美成人精品高清视频| 亚洲AV无码一区二区二三区软件 | 扒开两腿中间缝流白浆在线看| 黑人强伦姧人妻完整版| 青青草无码精品伊人久久蜜臀| 亚洲AV无码乱码国产麻豆 | 国产精品毛片一区内射| 蜜臀AⅤ永久无码一区二区| 五月综合激情婷婷六月色窝| AV无码久久久久不卡网站蜜桃| 国产最变态调教视频| 强行糟蹋人妻HD中文字幕| 亚洲男人成人性天堂网站| 房中之术御女之功秘术| 久久青草亚洲AV无码麻豆| 婷婷5月女内射AV| 996热RE视频精品视频这里| 黑人男女粗大猛烈进出视频| 色AV永久无码影院AV| …久久精品99久久香蕉国产| 国产香港明星裸体XXXX视频| 日本丰满熟妇BBxBB| 一区二区三区AV高清免费波多| 国产精品久久久久精品日日 | 久久精品午夜一区二区福利| 无码AV免费一区二区三区| BGMBGMBGM老妇60岁| 精品无码国产自产野外拍在线| 色妞WWW精品视频| 337P西西人体大胆瓣开下部| 精品久久久久久中文字幕人妻最新| 少女のトゲ在线观看动漫| 97人妻碰碰碰久久久久| 久久777国产线看观看精品| 水蜜桃AV无码一区二区| JAPAN强要VIDEOD警妞| 久久香蕉超碰97国产精品| 亚洲AV无码成人精品区浪潮AV| 大J8黑人W巨大888A片| 拧花蒂尿用力按凸起喷水尿AV| 亚洲日韩精品无码专区网站| 国产美熟女乱又伦AV果冻传媒| 日本理论片YY4800免费| √天堂资源地址在线官网| 精品日韩亚洲AV无码| 性无码免费一区二区三区屯线| 大战丰满无码人妻50P免费| 欧美 日韩 国产 亚洲 色 | 久久久久琪琪去精品色一到本| 亚洲AV成人片无码www妖精| 国产V亚洲V天堂A无码久久蜜桃| 人妻被按摩到潮喷中文字幕 | 欧美高清VIVO最新| 中文字幕乱码人妻综合二区三区 | 制服丝袜人妻中文字幕在线| 久久大香香蕉国产拍国| 亚洲AV无码一区二区三区在线| 国产精品成人AV片免费看| 少妇被黑人到高潮喷出白浆| 波多野结衣迅雷种子| 欧美性猛交XXXX乱大交丰满| 696969大但人文艺术主题| 美女露胸 0无挡挡| 欲しがる人妻 波多野结衣| 久久精品国产亚洲AV麻豆图片| 亚洲国产午夜精品理论片| 豪妇荡乳1一5白玉兰免费下载| 小烂货夹得好紧太爽了H苏妖精| 国产高潮抽搐翻白眼在线播放| 熟妇高潮一区二区精品| 公侵犯人妻一区二区三区免费| 日日摸日日碰夜夜爽亚洲| 俄罗斯18XXOO在线| 色综合久久久久综合一本到桃花网 | XXX激情影院亚洲AV| 强行征服邻居人妻| 锕锕锕锕锕锕~好深啊APP| 欧美乱妇高清无乱码在线观看| 99久久综合狠狠综合久久止| 欧美精产国品一二三类产品特点| AV国内精品久久久久影院| 欧洲VODAFONEWIFI巨| 阿娇被躁120分钟视频| 日本大片免A费观看视频| 大象成品网站1688入口官网| 三级无码在钱AV无码在钱| 国产成人婷婷丁香在线| 午夜理论电影在线观看亚洲| 国产一区二区三区在线观看免费| 亚洲AV永久一区二区三区蜜桃| 精品国产三级A∨在线观看| 亚洲中文字幕久在线| 美女无遮挡免费视频网站| AV大片在线无码免费| 日本精品少妇一区二区三区| 初尝黑人嗷嗷叫中文字幕| 天美传媒MV在线看免费| 国产午夜精华无码网站| 亚洲国产激情一区二区三区 | 亚洲精品无码成人片久久| 久久久久人妻一区精品果冻| 18禁无遮挡羞羞污污污污免费| 欧美日韩一区二区在线视频精品| 成人AV在线播放| 挺进绝色校花的紧窄小肉| 国内精品乱码卡一卡2卡麻豆| 亚洲午夜无码AV毛片久久| 男女作爱免费网站在线观看| 波多野结衣守望人妻理论| 无码精品黑人一区二区三区| 狠狠色噜噜狠狠狠888米奇视频| 怡红院AV一区二区三区| 轻点灬大JI巴太粗太长了| 国产成人综合一区人人| 亚洲加勒比无码一区二区| 老司机精品成人无码AV| YYYY11111少妇影院| 为了升职丈夫把我献给他们领导| 狠狠躁夜夜躁人人爽天天不卡软件| 亚洲欲色欲色XXXXX在线观看| 女色窝人体色777777九色| 丰满圆润大胸在线| 亚洲а∨天堂男人色无码蜜臀69| 老头猛挺进小雯的体内视频 | 射精情感曰妓女色视频| 姬小满乳液狂飙奖励自己| 做I爱直播APP| 少妇精品久久久久www| 娇小性XXXXX极品娇小| 91人人妻人人澡人人爽超污| 熟肉OVA初恋时间2附前作| 精品久久久噜噜噜久久久 | 欧美人交a欧美精品a∨一区| 国产精品白丝无码ThePorn| 一本加勒比HEZYO无码专区| 日本欧美一区二区三区乱码| 国产在线视频 | 传媒| 18禁美女裸身无遮挡免费网站| 天堂√中文最新版在线中文| 久久精品国产一区二区无码| 锕锕锕锕锕锕锕好疼JK| 亚洲AV成人一区国产精品| 欧美 日韩 国产 成人 在线观看 | 国产精品美女久久久| 影音先锋亚洲亚洲色图| 日本一区二区三区免费播放| 教室停电了校草挺进我体内 | A∨变态另类天堂无码专区| 无码高清一区二区三区| 麻豆一区二区三区精品视频|