golang學(xué)習(xí)比較簡單,不過任何一門語言都不是孤立存在的,在這里簡要說明一下golang開發(fā)的學(xué)習(xí)路線
創(chuàng)新互聯(lián)公司是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),外鏈,一元廣告為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
1.golang基礎(chǔ),包括go語言安裝,go語言語法,流程控制語句,函數(shù),方法,面向?qū)ο蟾拍?,網(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)知識
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é)有所成。
1.Docker項(xiàng)目
網(wǎng)址為 。
介紹:Docker是一種操作系統(tǒng)層面的虛擬化技術(shù),可以在操作系統(tǒng)和應(yīng)用程序之間進(jìn)行隔離,也可以稱之為容器。Docker可以在一臺物理服務(wù)器上快速運(yùn)行一個或多個實(shí)例。例如,啟動一個Cent OS操作系統(tǒng),并在其內(nèi)部命令行執(zhí)行指令后結(jié)束,整個過程就像自己在操作系統(tǒng)一樣高效。
2.golang項(xiàng)目
網(wǎng)址為 。
介紹:Go語言的早期源碼使用C語言和匯編語言寫成。從Go 1.5版本自舉后,完全使用Go語言自身進(jìn)行編寫。Go語言的源碼對了解Go語言的底層調(diào)度有極大的參考意義,建議希望對Go語言有深入了解的讀者讀一讀。
3.Kubernetes項(xiàng)目
網(wǎng)址為 。
介紹:Google公司開發(fā)的構(gòu)建于Docker之上的容器調(diào)度服務(wù),用戶可以通過Kubernetes集群進(jìn)行云端容器集群管理。
4.etcd項(xiàng)目
網(wǎng)址為 。
介紹:一款分布式、可靠的KV存儲系統(tǒng),可以快速進(jìn)行云配置。
5.beego項(xiàng)目
網(wǎng)址為 。
介紹:beego是一個類似Python的Tornado框架,采用了RESTFul的設(shè)計(jì)思路,使用Go語言編寫的一個極輕量級、高可伸縮性和高性能的Web應(yīng)用框架。
6.martini項(xiàng)目
網(wǎng)址為 。
介紹:一款快速構(gòu)建模塊化的Web應(yīng)用的Web框架。
7.codis項(xiàng)目
網(wǎng)址為 Labs/codis。
介紹:國產(chǎn)的優(yōu)秀分布式Redis解決方案。
8.delve項(xiàng)目
網(wǎng)址為 。
介紹:Go語言強(qiáng)大的調(diào)試器,被很多集成環(huán)境和編輯器整合。
1、下載go的zip文件。并且一定要把文件解壓到c:\go目錄下。
2、配置windows的高級環(huán)境變量。包括:GOROOT、GOOS、GOBIN、GOARCH。并且在path變量里面把c:\go\bin加入。以便可以在命令行直接運(yùn)行g(shù)o命令。
舉例:我的機(jī)器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安裝路徑;
F:\workspace\goSample01是我寫的go語言項(xiàng)目的工程目錄;
F:\workspace\goSample01\bin是go語言項(xiàng)目的工程目錄下的可執(zhí)行文件路徑;
3、在完成環(huán)境變量配置后,打開一個命令行窗口,直接輸入go,然后回車,看看是否出現(xiàn)go的幫助信息。如果出現(xiàn),那么go的基本環(huán)境就OK了。
注意:這個基本環(huán)境不包含開發(fā)工具,也不能直接編譯帶C代碼的go程序。
4、(可選)為了支持Import遠(yuǎn)程包,最好裝個gomingw。下載地址:。如果下的是壓縮包,請把它解壓到C盤。例如,C:\gowin-env。里面有個Console.bat是以后使用go get的環(huán)境。舉例:有個文件a.go,里面import(
"fmt"
"github點(diǎn)抗 /astaxie/beedb"
_ "github點(diǎn)抗 /ziutek/mymysql/godrv"
為了編譯該a.go文件,需要啟動Console.bat,然后在該命令行窗口,進(jìn)入c:\go\src目錄下,執(zhí)行g(shù)o getgithub點(diǎn)抗 /astaxie/beedb
Go get github點(diǎn)抗 /ziutek/mymysql/godrv .
Go會自動下載該遠(yuǎn)程包并編譯和安裝這些包。
配置goclipse(可選)
(如果不喜歡eclipse開發(fā)工具,請?zhí)^這個配置。)
1、下載并安裝goclipse插件。Goclipse是go語言for eclipse的插件,下載地址:
2、啟動eclipse并創(chuàng)建go項(xiàng)目。然后寫個最簡單的helloworld.go文件,并運(yùn)行。代碼如下:
packagemainimport"fmt"func main(){ fmt.Printf("hello, world")}
配置gocode(可選)
如果不需要go語法輔助和eclipse里面的(按ALT+/)彈出go語言自動輔助功能,請?zhí)^這個配置。
1、下載gocode的zip文件,解壓后放在go的bin目錄下。
2、下載并安裝Git軟件。并且在path里面配置git的執(zhí)行路徑。例如c:\git\bin
3、在命令行執(zhí)行:go build .\gocode。如果一切正常,那么將會編譯生成一個gocode.exe文件在go的bin目錄下。如果編譯失敗,那么就轉(zhuǎn)第4步。
4、如果第3步直接編譯gocode源文件成功,那就直接到第5步。否則,就需要通過git下載gocode源文件,然后再編譯。在命令行執(zhí)行:go get -u github點(diǎn)抗 /nsf/gocode 。就會生成gocode.exe文件。
5、在goclipse插件里面指定gocode的路徑。就可以在elcipse里面調(diào)用gocode來幫助寫編碼了。
從開發(fā)工具這塊看,go語言還不夠成熟,開發(fā)工具都還不完善,有待改進(jìn)。
下載go-tour教程源代碼(可選)
Google有個在線運(yùn)行g(shù)o語言的教程(),很不錯。支持在web上直接運(yùn)行大部分的go程序,想了解這個教程的源代碼的朋友可以通過以下方式獲取。如果沒興趣,可以跳過這個步驟。
1、下載安裝Mercurial軟件。
2、在命令行下輸入:
hg clone
這個URL是我從google的go-tour源代碼的一個clone。作為測試用的。如果把http改成https協(xié)議,下載就會失敗。搞不懂。
編譯帶調(diào)用C代碼的go文件(可選)
1、為了在windows下編譯帶C代碼的go程序,你首先需要下載并安裝MinGW或者Cygwin。
2、首選安裝MinGW。在安裝MinGW之后,記得要把MinGW安裝目錄\bin路徑設(shè)置在path環(huán)境變量里面,以便能在dos窗口下直接調(diào)用gcc。
3、下載一個gowin-env。下載地址:gowin-env。下載后解壓到某個目錄下,例如:C:\gowin-env. 然后,編輯go-env.bat。配置相關(guān)的go參數(shù)。例如,我的配置是:
set GOARCH=386
set GOOS=windows
set GOROOT=c:\go
set GOBIN=%GOROOT%\bin
set GOPATH=%GOROOT%;F:\workspace\goSample01;
設(shè)置好go-env.bat后,就可以點(diǎn)擊Console.bat來啟動編譯和運(yùn)行窗口。
4、編寫一個帶C代碼的go程序。例如,testc.go
5、編譯
例如:
go build -compiler gccgo test_c.go
運(yùn)行調(diào)用C代碼的go文件(可選)
1、testc.go.
創(chuàng)建rand目錄,然后在rand里面創(chuàng)建testc.go. 代碼如下:
package rand
/*
//
#include stdio.h
*/
import "C"
func PrintHello() {
C.puts(C.CString("Hello, world\n"))
}
2、a.go
在rand下創(chuàng)建a.go.代碼如下:
package rand
import "fmt"
func SayHello(name string){
fmt.Println(name)
}
3、test_import.go
在rand的上一級創(chuàng)建test_import.go。代碼如下:
package main
import "./rand"
func main(){
rand.SayHello("tom")
rand.PrintHello()
}
4、運(yùn)行test_import.go
go run test_import.go
在測試其它幾個C代碼的時候,發(fā)現(xiàn)windows版本的cgo還有些編譯問題,同樣的代碼轉(zhuǎn)移到蘋果的XCODE下就沒有問題。后來終于發(fā)現(xiàn)原因了,原來有些例子是unix平臺下的,而在windows平臺下,方法名和參數(shù)需要做調(diào)整。
例如:下面代碼在windows下編譯報(bào)一堆錯誤。
package rand
/*
#include stdlib.h
*/
import "C"
func Random() int {
return int(C.random())
}
func Seed(i int) {
C.srandom(C.uint(i))
}
這里需要把return int(C.random()) 修改為“return int(C.rand())”
C.srandom(C.uint(i))修改為“C.srand(C.uint(i))”編譯就OK了。
Go語言由Google公司開發(fā),并于2009年開源,相比Java/Python/C等語言,Go尤其擅長并發(fā)編程,性能堪比C語言,開發(fā)效率肩比Python,被譽(yù)為“21世紀(jì)的C語言”。
Go語言在云計(jì)算、大數(shù)據(jù)、微服務(wù)、高并發(fā)領(lǐng)域應(yīng)用應(yīng)用非常廣泛。BAT大廠正在把Go作為新項(xiàng)目開發(fā)的首選語言。
Go語言能干什么?
1、服務(wù)端開發(fā):以前你使用C或者C++做的那些事情,用Go來做很合適,例如日志處理、文件系統(tǒng)、監(jiān)控系統(tǒng)等;
2、DevOps:運(yùn)維生態(tài)中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go語言開發(fā);
3、網(wǎng)絡(luò)編程:大量優(yōu)秀的Web框架如Echo、Gin、Iris、beego等,而且Go內(nèi)置的 net/http包十分的優(yōu)秀;
4、Paas云平臺領(lǐng)域:Kubernetes和Docker Swarm等;
5、分布式存儲領(lǐng)域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;
6、區(qū)塊鏈領(lǐng)域:區(qū)塊鏈里面有兩個明星項(xiàng)目以太坊和fabric都使用Go語言;
7、容器虛擬化:大名鼎鼎的Docker就是使用Go語言實(shí)現(xiàn)的;
8、爬蟲及大數(shù)據(jù):Go語言天生支持并發(fā),所以十分適合編寫分布式爬蟲及大數(shù)據(jù)處理。