成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院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號
国偷自产视频一区二区久| 精品国产乱码久久久久夜深人妻| 国产精品一线二线三线精华液| 国产午夜成人无码免费看| 黑人上司与人妻激烈中文字幕 | 99精品国产成人一区二区| ZOOM与动物ZOOM| 国产爱豆剧传媒在线观看视频| 国产午夜成人无码免费看| 久久久久久国产精品免费免费| 男人操女人视频图片日韩| 人人妻人人爽人人 | 国产AⅤ无码专区亚洲AV麻豆| 国产丝袜视频一区二区三区| 久久精品国产国产精品四凭| 欧美丰满熟妇XXXX性PPX人| 色噜噜狠狠色综合日日| 亚洲AV无码乱码在线观看代蜜桃| 亚洲熟妇无码一区二区三区| 99久久99久久精品国产片果冻| 大炕上的肉体交换| 国产一区二区无码蜜芽精品| 久久亚洲精品成人AV无码网站| 欧美三级一区二区| 无码国产激情在线观看| 亚洲人成网站18禁止大| JAVA强行VIDEOS另类| 国产精东天美AV影业传媒| 久精品夜色国产亚洲AV| 欧洲FREEXXXX性少妇播放| 无码国产激情在线观看| 夜夜未满十八勿进的爽爽影院| JAPANESE极品少妇| 国产色无码精品视频免费| 美女裸体无遮挡免费视频| 三上悠亚SSNL-618无码播| 亚洲国产精品成人久久久| CAOPORN国产精品免费| 国产精品爽爽ⅴa在线观看| 久久久久国产精品| 日韩乱码人妻无码超清蜜桃| 亚洲国产AV一区二区三区丶| AV人摸人人人澡人人超碰手机版 | 久久精品免费一区二区三区| 欧亚成年男女深夜百度网盘| 亚洲AV无码一区二区二三区下载| 91人人澡人人爽内射电影院| 国产精品亚洲片夜色在线| 免费看美女脱精光的网站| 挽起裙子迈开腿坐下去的图片高清| 和朋友换娶妻野外夫妇3| 免费A级毛片AV无码| 天天躁日日躁狠狠躁AV麻豆| 尤物TV国产精品看片在线| 丰满少妇人妻无码专区| 久久婷婷六月综合色液啪| 日日躁狠狠躁死你H| 一本色道久久88—综合亚洲精品| 福利一区福利二区| 国产成人精品综合久久久久| 久久天天躁狠狠躁夜夜AVAPP| 天堂8中文在线最新版官网| 偷欧洲亚洲另类图片AV天堂| 一边做一边说国语对白| 国产丰满饥渴老女人HD| 女人收缩时男人舒服吗| 亚洲AV无码专区亚洲AV桃| 八戒八戒神马2021| 久久精品夜色噜噜亚洲A∨| 天堂√在线中文官网在线| 20岁小伙GAYGAYXⅩX| 国内精品自线在拍大学生| 日韩精品一区二区三区色欲AV| 一本久久知道综合久久 | WWXX在线观看免费| 久久国产色欲AV38| 玩弄CHINESE丰满人妻VI| A∨无码天堂AV| 久久久精品人妻一区二区三区蜜桃 | 亚洲AV无码成人精品区在线观看| 八戒八戒WWW资源网在线观看| 久久久噜噜噜久噜久久| 亚洲AV成人在线| 东北老女人高潮大喊舒服死了| 免费人成在线观看网站品善网| 亚洲成AV人片天堂网久久| 国产99久久久国产精品成人小说| 欧美成本人网站免费观看| 亚洲色偷偷综合亚洲AV伊人蜜桃| 国产成人一区二区三区免费| 全部免费A级毛片| 中文字幕精品亚洲一区| 精品人无码一区二区三区| 无码熟熟妇丰满人妻啪啪喷水| 被驯服的人妻佐佐木明希| 老司机午夜精品99久久免费| 亚洲А∨天堂男人色无码| 国产成人无码AⅤ片在线观看你| 强 暴 疼 哭 处 女| 中文字幕无码精品亚洲资源网久久| 精品国产亚洲第一区二区三区| 无码熟妇人妻AV在线C0930| 丰满人妻被黑人中出849| 人妻人人添人人爽夜夜欢视频| 4D肉蒲团之性奴大战奶水| 久久亚洲精品中文字幕波多野结衣| 亚洲GV天堂无码男同在线观看| 国产精品人人爽人人做我的可爱| 色噜噜狠狠色综合AV| 被黑人巨茎日出白浆的少妇| 妺妺窝人体色WWW聚色窝| 一本一道人人妻人人妻ΑV| 精品一线二线三线精华液| 亚洲成人AV无码| 国外精产品W灬源码16| 性欧美极品XXXX欧美一区二区| 国产成人69视频午夜福利在线观 | 欧洲一卡2卡三卡4卡 乱码| 2021国产手机在线精品| 免费观看黄A级毛片| 在线观看免费视频| 里番ACG★同人里番本子大全| 亚洲综合色区另类AV| 久久大香国产成人AV| 亚洲精品亚洲人成在线| 边做边爱MP3在线播放免费观看| 女人不怕粗短就怕蘑菇头什么意 | 公粗挺进了我的密道在线观看| 人人妻人人澡人人爽超污 | 人妻少妇偷人精品视频| 被青梅竹马的学弟给锁定了林擎霄| 秋霞成人无码电影在线观看| YY111111少妇影院无码老| 人妻中文无码就熟专区| ZZIJZZIJ亚洲日本少妇| 区二区三区国产精华液区别大吗| 宝贝感受到它在爱你吗病娇小说| 人妻无码AⅤ中文字幕日韩| 被老头一个晚上做了6次| 三个媳妇一锅烩大团圆| 国产SUV精品一区二区四| 无码aⅴ精品一区二区三区浪潮 | 欧美性猛交XXXX乱大交蜜桃| JAPANESE人妻中文字幕| 强奷乱码中文字幕熟女导航| 成人无号精品一区二区三区| 少妇激情一区二区三区视频| 国产精品久久久久久久久久久不卡| 午夜香吻视频在线看免费| 国模无码视频一区| 亚洲少妇XXXXX| 麻豆妓女爽爽一区二区三| 92国产精品午夜福利| 人人妻人人添人人爽日韩欧美| 成人网站在线观看丰满少妇电影| 婷婷国产成人精品视频| 黑人上司粗大拔不出来| 夜夜躁狠狠躁日日躁2002| 女高中生自慰污污网站| 成人精品视频一区二区不卡| 挽起裙子迈开腿坐上去C黄| 狠狠色婷婷久久一区二区三区| 一区二区操逼视频| 欧洲精品久久久AV无码电影| 公交车上摸到花蒂进去了视频| 亚洲ⅤA中文字幕无码| 久久精品无码免费不卡| 99精产国品一二三产品| 色五月丁香五月综合五月亚洲 | 内射中出日韩无国产剧情| 成 人 黄 色 视 频网址大全 | 亚洲综合日韩AV无码毛片| 欧美精品V国产精品V日韩精品| 大荫蒂又大又长又硬又紧又粗| 亚洲∧V久久久无码精品| 久久天天躁狠狠躁夜夜AVAPP| XXXX性×XX老少配| 无码精品人妻一区二区三区影院 | 国产精品VA无码免费麻豆| 亚洲欧洲AV综合色无码 | ぱらだいす天堂中文WWW| 无码AV熟妇素人内射vr在线| 久久99国产精品久久| www.av在线播放| 亚洲AV成人一区国产精品| 美日韩AV成人影院| 夫妇交换聚会群4P疯狂大战视频| 亚洲AV最新天堂网址| 女人裸体张开腿无遮挡| 国产粉嫩馒头无套内在线观看免费 | 装醉把自己给流浪汉玩| 双飞两个丰满少妇11P| 久久鬼色综合88久久| 不卡无码人妻一区二区三区| 亚洲AV无码一区二区三区在线观| 男吃乳尖玩奶头高潮视频| 国产韩国精品一区二区三区久久| 尤物爽到高潮潮喷视频大全| 少妇极品熟妇人妻| 久久综合噜噜激激的五月天|