go語言單測學(xué)習(xí)順序 go語言教程推薦

GO語言學(xué)習(xí)系列八——GO函數(shù)(func)的聲明與使用

GO是編譯性語言,所以函數(shù)的順序是無關(guān)緊要的,為了方便閱讀,建議入口函數(shù) main 寫在最前面,其余函數(shù)按照功能需要進(jìn)行排列

萬載網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),萬載網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為萬載1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的萬載做網(wǎng)站的公司定做!

GO的函數(shù) 不支持嵌套,重載和默認(rèn)參數(shù)

GO的函數(shù) 支持 無需聲明變量,可變長度,多返回值,匿名,閉包等

GO的函數(shù)用 func 來聲明,且左大括號(hào) { 不能另起一行

一個(gè)簡單的示例:

輸出為:

參數(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è)可變長度的參數(shù)

輸出為:

在上例中, strs ...string 中, strs 的實(shí)際值是b,c,d,e,這就是一個(gè)最簡單的傳遞可變長度的參數(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è)最簡單的測試了,當(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語言?

golang學(xué)習(xí)比較簡單,不過任何一門語言都不是孤立存在的,在這里簡要說明一下golang開發(fā)的學(xué)習(xí)路線

1.golang基礎(chǔ),包括go語言安裝,go語言語法,流程控制語句,函數(shù),方法,面向?qū)ο蟾拍睿W(wǎng)絡(luò)編程,并發(fā)編程等

2.golang開發(fā)框架,包括beego,gin,Iris,Echo等

3.微服務(wù)開發(fā)

4.深入的話還可以學(xué)習(xí)算法部分。如果要接觸區(qū)塊鏈相關(guān)技術(shù)的話,還需要學(xué)習(xí)區(qū)塊鏈的加密算法等相關(guān)知識(shí)

5.如果要結(jié)合go實(shí)現(xiàn)應(yīng)用的話,肯定離不開各種數(shù)據(jù)庫,比如關(guān)系型數(shù)據(jù)庫oracle、mysql,或者各類非關(guān)系型數(shù)據(jù)庫等等

6.如果需要開發(fā)界面的話,還需要學(xué)習(xí)網(wǎng)頁編程如html,javascript,vue,elementUI,bootstrap等網(wǎng)頁開發(fā)技術(shù)和框架。

7.在以上學(xué)習(xí)的基礎(chǔ)上還可以向架構(gòu)方面深入學(xué)習(xí)。

鏈喬教育在線祝您學(xué)有所成。

怎么學(xué)習(xí)golang

除了Java、Python和JavaScript之外,如果要開始學(xué)習(xí)一門新語言的話,我想應(yīng)該是Go!

Go語言正在被越來越多的公司使用。我們公司的后端服務(wù)已經(jīng)全面采用Go語言實(shí)現(xiàn)了。

最開始接觸Go語言是去年將一份Go代碼“翻譯”成Python并集成到測試平臺(tái)上,說來也挺神奇,我從來沒學(xué)過Go卻完成了這個(gè)工作,這也側(cè)面反應(yīng)了Go的語法還是很平易近人的。

今年,在海翔飛調(diào)崗之后已經(jīng)沒有太多時(shí)間寫代碼了,但如果要開始學(xué)習(xí)一個(gè)新的語言或技術(shù)的話,我最想學(xué)的是Go!

目前來看,Go似乎還并沒有太多測試人員使用的場景,不過,我之前介紹過的BDD行為驅(qū)動(dòng)框架gauge是由Go開發(fā)的,當(dāng)然,它也支持使用Go來編寫B(tài)DD測試代碼。

對(duì)于,已經(jīng)有一定開發(fā)經(jīng)驗(yàn)的同學(xué),如何快速的開始學(xué)習(xí)Go語言呢?我這里給一些思路。

#### 第一步:下載和安裝

在配置環(huán)境的時(shí)候你需要重點(diǎn)了解GOROOT、GOPATH的作用。

你還要準(zhǔn)備一款稱手的編輯器,如果你像我一樣,一直都在使用VS Code的話,那么就它就可以了。

#### 第二步:從hello world開始

先運(yùn)行一個(gè)hello world程序,認(rèn)識(shí)Go語言的語法。

package main

import ( ? ?"fmt")

func main(){

fmt.Println("helloworld!")

}

#### 第三步:熟悉Go的語法

接下來,你可能要花一周左右的時(shí)間熟悉Go語言的語法。比如,變量定義、if/for、函數(shù)、Map、跨文件的程序調(diào)用…等,當(dāng)然,還有一些Go特有的知識(shí)。

當(dāng)然,我更喜歡看視頻教程,雖然質(zhì)量參差不齊,但我仍然覺得看視頻比我自己看書更有效率。

熟悉一段Go代碼:

package main

import"fmt"

func myFunc() {

i := 0

Here: ? //這行的第一個(gè)詞,以冒號(hào)結(jié)束作為標(biāo)簽

fmt.Println(i)

i++ ? ?if i 10{ ? ? ? ?goto Here ? //跳轉(zhuǎn)到Here去

}

}func main() { ? ?//調(diào)用函數(shù)

myFunc()

}

#### 第四步:Go如何做單元測試

針對(duì)Go做測試也非常簡單。比如,這是一個(gè)被測試文件:add.go。

package test_demofunc Add(a int, b int) int{ ? ?return a + b

}

下面針對(duì)Add()函數(shù)編寫測試用例,test_add.go

package test_demo

import ( ? ?"testing")

func TestAdd1(t *testing.T){

r:= Add(1, 2) ? ?if r !=3{

t.Errorf("Add(1, 2)failed. Got %d, expected 3.", r)

}

}

func TestAdd2(t *testing.T){

r:= Add(2, 2) ? ?if r !=4{

t.Errorf("Add(2, 2)failed. Got %d, expected 4.", r)

}

}

你只需要執(zhí)行?go test?命令就可以運(yùn)行上面的測試了。

#### 第五步:從哪兒找第三方庫

當(dāng)然,你只學(xué)習(xí)go語言本身,基本是做不了什么事的,必須要使用第三方擴(kuò)展庫。

這里羅列了Go語言的第三方庫,通過這些第三方庫的介紹,我們也可以大概知道Go可以用來干什么。

如果你知道庫的名字的話,也可以在這個(gè)網(wǎng)站上搜索。

據(jù)我了解,Go的第三方庫大多都在GitHub上面。

#### 第六步:用Go做Web開發(fā)

Go是靜態(tài)語言,而且支持并發(fā)編程,所以,他有天然的性能優(yōu)勢,大多公司主要使用Go也是開發(fā)后端服務(wù)(即API)。

終于到了實(shí)戰(zhàn)階段,如果我們真的要掌握一門語言,那么一定要用它來開發(fā)一個(gè)項(xiàng)目出來。這個(gè)過程大概需要一個(gè)月。

Beego是Go下在主流的Web開發(fā)框架,資料相對(duì)比較豐富,而且有完善的文檔。你可為此制定一個(gè)目標(biāo),比如用它來開發(fā)一個(gè)Blog,為此,你需要詳細(xì)閱讀Beego文檔,以及學(xué)習(xí)相關(guān)的Web開發(fā)技術(shù)。

等你完成這個(gè)項(xiàng)目的時(shí)候,我想你已經(jīng)會(huì)使用Go語言了。

分享文章:go語言單測學(xué)習(xí)順序 go語言教程推薦
標(biāo)題網(wǎng)址:http://muchs.cn/article8/ddiggop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)