GO是編譯性語(yǔ)言,所以函數(shù)的順序是無(wú)關(guān)緊要的,為了方便閱讀,建議入口函數(shù) main 寫在最前面,其余函數(shù)按照功能需要進(jìn)行排列
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、沅江網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為沅江等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
GO的函數(shù) 不支持嵌套,重載和默認(rèn)參數(shù)
GO的函數(shù) 支持 無(wú)需聲明變量,可變長(zhǎng)度,多返回值,匿名,閉包等
GO的函數(shù)用 func 來聲明,且左大括號(hào) { 不能另起一行
一個(gè)簡(jiǎn)單的示例:
輸出為:
參數(shù):可以傳0個(gè)或多個(gè)值來供自己用
返回:通過用 return 來進(jìn)行返回
輸出為:
上面就是一個(gè)典型的多參數(shù)傳遞與多返回值
對(duì)例子的說明:
按值傳遞:是對(duì)某個(gè)變量進(jìn)行復(fù)制,不能更改原變量的值
引用傳遞:相當(dāng)于按指針傳遞,可以同時(shí)改變?cè)瓉淼闹担⑶蚁牡膬?nèi)存會(huì)更少,只有4或8個(gè)字節(jié)的消耗
在上例中,返回值 (d int, e int, f int) { 是進(jìn)行了命名,如果不想命名可以寫成 (int,int,int){ ,返回的結(jié)果都是一樣的,但要注意:
當(dāng)返回了多個(gè)值,我們某些變量不想要,或?qū)嶋H用不到,我們可以使用 _ 來補(bǔ)位,例如上例的返回我們可以寫成 d,_,f := test(a,b,c) ,我們不想要中間的返回值,可以以這種形式來舍棄掉
在參數(shù)后面以 變量 ... type 這種形式的,我們就要以判斷出這是一個(gè)可變長(zhǎng)度的參數(shù)
輸出為:
在上例中, strs ...string 中, strs 的實(shí)際值是b,c,d,e,這就是一個(gè)最簡(jiǎn)單的傳遞可變長(zhǎng)度的參數(shù)的例子,更多一些演變的形式,都非常類似
在GO中 defer 關(guān)鍵字非常重要,相當(dāng)于面相對(duì)像中的析構(gòu)函數(shù),也就是在某個(gè)函數(shù)執(zhí)行完成后,GO會(huì)自動(dòng)這個(gè);
如果在多層循環(huán)中函數(shù)里,都定義了 defer ,那么它的執(zhí)行順序是先進(jìn)后出;
當(dāng)某個(gè)函數(shù)出現(xiàn)嚴(yán)重錯(cuò)誤時(shí), defer 也會(huì)被調(diào)用
輸出為
這是一個(gè)最簡(jiǎn)單的測(cè)試了,當(dāng)然還有更復(fù)雜的調(diào)用,比如調(diào)試程序時(shí),判斷是哪個(gè)函數(shù)出了問題,完全可以根據(jù) defer 打印出來的內(nèi)容來進(jìn)行判斷,非??焖?,這種留給你們?nèi)?shí)現(xiàn)
一個(gè)函數(shù)在函數(shù)體內(nèi)自己調(diào)用自己我們稱之為遞歸函數(shù),在做遞歸調(diào)用時(shí),經(jīng)常會(huì)將內(nèi)存給占滿,這是非常要注意的,常用的比如,快速排序就是用的遞歸調(diào)用
本篇重點(diǎn)介紹了GO函數(shù)(func)的聲明與使用,下一篇將介紹GO的結(jié)構(gòu) struct
《學(xué)習(xí)Go語(yǔ)言》百度網(wǎng)盤pdf最新全集下載:
鏈接:
?pwd=je9c 提取碼: je9c
簡(jiǎn)介:Google工程師親授,從學(xué)習(xí)語(yǔ)言語(yǔ)法特性到函數(shù)式編程、并發(fā)編程等等。理論與實(shí)戰(zhàn)結(jié)合,幫助快速掌握Go語(yǔ)言。通過研讀標(biāo)準(zhǔn)庫(kù)等經(jīng)典代碼設(shè)計(jì)模式,啟發(fā)讀者深刻理解Go語(yǔ)言的核心思維,進(jìn)入Go語(yǔ)言開發(fā)的更高階段。 ?
如果有其他語(yǔ)言基礎(chǔ)的話,直接類比學(xué)習(xí)就好了。如果沒有話那就先得熟悉編程思維,在掌握語(yǔ)言具體用法.
用 Go 編程的感覺很棒。庫(kù)程序里有我想要的一切,總體實(shí)現(xiàn)較為完善。學(xué)習(xí)體驗(yàn)也十分順暢,不得不說,Go 是一種經(jīng)過精心設(shè)計(jì)的實(shí)用性語(yǔ)言。舉個(gè)例子:一旦你知悉了 Go 的語(yǔ)法,就能將其他語(yǔ)言中慣用法延續(xù)到 Go 中。只要你學(xué)會(huì)一些 Go,就可以相對(duì)輕易地推測(cè) Go 語(yǔ)言的其他特性。憑借一些來自其他語(yǔ)言的知識(shí),我能夠閱讀并理解 Go 代碼,而不需要過多的搜索
2022年6月, 編程語(yǔ)言的七國(guó)集團(tuán)會(huì)議在風(fēng)景優(yōu)美的Linux莊園如期召開。
病毒肆虐,各國(guó)首腦也都保持了良好的社交距離。
C語(yǔ)言作為會(huì)議召集人,在大屏幕上用一幅圖總結(jié)了一下近二十年各國(guó)的沉浮。
各國(guó)代表對(duì)C語(yǔ)言的工作紛紛表示贊賞。
C語(yǔ)言隨后介紹了本次G7峰會(huì)的兩大議題。
第一個(gè)議題剛剛開始,各方就吵成了一鍋粥。
雙方越說越激動(dòng)
眼瞅著第一個(gè)議題就要打起來,C老大趕緊出手。
雙方暫時(shí)休戰(zhàn),經(jīng)過一番唇槍舌戰(zhàn), 各方再次確立了自己的勢(shì)力范圍:
沒人理會(huì)PHP,峰會(huì)立刻轉(zhuǎn)入第二個(gè)議題。
C語(yǔ)言給每個(gè)人發(fā)了一份報(bào)告, 上面列舉了最近10年出現(xiàn)的編程新秀。
C老大再次要求大家暢所欲言
大家紛紛表示同意。
剛才熱鬧的氣氛一下子安靜下來。
良久以后,Java支了一招
只不過新人加入會(huì)觸動(dòng)現(xiàn)有的利益,需要從長(zhǎng)計(jì)議。
為期兩天的G7峰會(huì)勝利閉幕了,參會(huì)各方再次劃分了勢(shì)力范圍,發(fā)表了一個(gè)重要的宣言。