Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境圖文詳解_第1頁
Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境圖文詳解_第2頁
Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境圖文詳解_第3頁
Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境圖文詳解_第4頁
Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境圖文詳解_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境圖文詳解目錄1、Go語言簡介2、安裝Git3、Go工具鏈(編譯?)安裝3.1、環(huán)境變量GOROOT3.2、環(huán)境變量GOPATH3.3、Go常用命令4、包管理4.1、gomodule4.2、gopm5、編寫Go語言代碼的IDE或編輯工具5.1、基于VSCode的Go開發(fā)環(huán)境5.1.1、安裝VSCode5.1.2、安裝插件5.1.3、常用配置5.2、GoLand5.3、Vim5.4、其他Go代碼編寫工具6、Go語言學習資料分享本文詳細講述如何在Windows系統(tǒng)上搭建Go語言的開發(fā)環(huán)境,以供借鑒或參考。文章將介紹Go語言的VSCode、GoLand、Vim三種開發(fā)環(huán)境,大家可以靈活選擇。

1、Go語言簡介

Go語言(又稱Golang),起源于2007年,并在2009年由Google正式對外發(fā)布。Go語言是一種靜態(tài)強類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語言,它的主要目標是兼具Python等動態(tài)語言的開發(fā)速度和C/C++等編譯型語言的性能與安全性。Go語言目前可以達到C/C++80%的運行性能,其編譯速度遠快于Java和C/C++。

與C++相比,Go并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數(shù)等功能,但增加了切片(Slice)型、并發(fā)、管道、垃圾回收、接口(Interface)等特性的語言級支持。Go2.0版本將支持泛型,對于斷言的存在,則持負面態(tài)度,同時也為自己不提供類型繼承來辯護。

Go語言是編程語言設計的又一次嘗試,是對類C語言的重大改進,它不但能讓你訪問底層操作系統(tǒng),還提供了強大的網(wǎng)絡編程和并發(fā)編程支持。Go語言的用途眾多,可以進行網(wǎng)絡編程、系統(tǒng)編程、并發(fā)編程、分布式編程。

GO語言有如下特性:

靜態(tài)編譯垃圾回收簡潔的符號和語法平坦的類型系統(tǒng)基于CSP的并發(fā)模型。高效簡單的工具鏈。豐富的標準庫

Go語言的推出,旨在不損失應用程序性能的情況下降低代碼的復雜性,具有部署簡單、并發(fā)性好、語言設計良好、執(zhí)行性能好等優(yōu)勢,目前國內諸多IT公司均已采用Go語言開發(fā)項目,特別是在大型互聯(lián)網(wǎng)公司有著廣泛的應用。

很多重要的開源項目都是使用Go語言開發(fā)的:

1)Docker:火熱的容?化技術

2)Kubernetes:GooleBorg的開源實現(xiàn)

3)LXD:另一個容?化技術,其定位是系統(tǒng)容?,直接對標虛擬機。

4)Etcd:類似zookeeper的高可用key-value存儲

5)TIDB:國人開發(fā)的Goolespanner的開源實現(xiàn)。定位于在線事務處理/在線分析處理(HTAP:HybridTransactional/AnalyticalProcessing)的融合型數(shù)據(jù)庫產(chǎn)品,實現(xiàn)了一鍵水平伸縮,強一致性的多副本數(shù)據(jù)安全,分布式事務,實時OLAP等重要特性。同時兼容MySQL協(xié)議和生態(tài),遷移便捷,運維成本極低。

2、安裝Git

Go語言開發(fā)過程中用到的第三方包,需要使用git下載,因此git是必不可少的。下載地址為:。

假設安裝路徑為C:\ProgramFiles\Git,需要將以下路徑添加到環(huán)境變量PATH:

C:\ProgramFiles\Git\bin

C:\ProgramFiles\Git\cmd

這個地方初學者需要注意一下,Git默認是采用命令行手動輸入命令去操作的。還可以像SVN那樣通過UI界面去做操作,只要下載TortoiseGit就好了。

3、Go工具鏈(編譯?)安裝

先到GO語言官網(wǎng)Downloads-TheGoProgrammingLanguage下載最新版本的GO語言安裝包,雙擊按照向導完成安裝:

Golang開發(fā)環(huán)境涉及到幾個環(huán)境變量,比較重要的是:GOROOT,GOPATH。使用goenv命令就可以查看Go的環(huán)境變量,不帶參數(shù)打印所有環(huán)境變量:

λgoenv

setGOARCH=amd64

setGOBIN=

setGOCACHE=C:\Users\zhuyadong\AppData\Local\go‐build

setGOEXE=.exe

setGOFLAGS=

setGOHOSTARCH=amd64

setGOHOSTOS=windows

setGOOS=windows

setGOPATH=C:\Users\zhuyadong\go

setGOPROXY=https://goproxy.io

setGORACE=

setGOROOT=D:\Program\Go

setGOTMPDIR=

setGOTOOLDIR=D:\Program\Go\pkg\tool\windows_amd64

setGCCGO=gccgo

setCC=gcc

setCXX=g++

setCGO_ENABLED=1

setGOMOD=

setCGO_CFLAGS=‐g‐O2

setCGO_CPPFLAGS=

setCGO_CXXFLAGS=‐g‐O2

setCGO_FFLAGS=‐g‐O2

setCGO_LDFLAGS=‐g‐O2

setPKG_CONFIG=pkg‐config

setGOGCCFLAGS=‐m64‐mthreads‐fmessage‐length=0‐fdebug‐prefix‐map=C:\Temp

3.1、環(huán)境變量GOROOT

GOROOT其實就是Golang的安裝目錄。新版本的GOROOT已經(jīng)不需要設置了。Golang編譯器安裝后,會自動把%GOROOT%\bin目錄添加到環(huán)境變量PATH。

如下所示,這是我電腦上安裝完Golang后,在命令行中輸出的Go版本:

λgoversion

2goversiongo1.19.2windows/amd64

3.2、環(huán)境變量GOPATH

可以把GOPATH指向的目錄,理解為工作目錄,其作用是告訴Go命令和其它相關工具,在哪里找系統(tǒng)上安裝的Go包。

GOPATH可以指向多個路徑,與其它環(huán)境變量的設置一樣,用相同的分割符分割。windiows系統(tǒng)分割符是;,linux系統(tǒng)分割符是:。

默認的GOPATH是%USERPROFILE%\go\bin。在沒有GoModules之前,通常都需要修改GOPATH的值。GOPATH的目錄結構,是約定好的,不可修改:

GOPATH

├─bin存放安裝的第三方工具

├─pkg存放編譯的第三方庫

└─src源碼目錄

├─demo這是你自已的項目源代碼,每個項目一個目錄

└─這是從下載的第三庫、工具的源代碼

3.3、Go常用命令

gobuild在源代碼目錄執(zhí)行該命令,編譯該目錄下的源代碼,生成可執(zhí)行程序或庫。

goinstall除了編譯,還進行安裝(將生成的結果拷貝到指定目錄)??蓤?zhí)行程序拷貝到%GOPATH%\bin,庫拷貝到%GOPATH%\pkg。

goget從遠程倉庫獲取代碼,同時進行編譯和安裝。

4、包管理

由于國內眾所周知的網(wǎng)絡原因,不能直接訪問golang的官方網(wǎng)站,由此導致不能自動安裝依賴項,這也是搭建Go開發(fā)環(huán)境最麻煩的地方。為解決網(wǎng)絡問題,有以下幾種方法:

1)方法1:找一個可用的VPN。

2)方法2:安裝失敗后,查看日志,到上查找對應的庫,下載到本機的對應位置,再執(zhí)行goinstall進行安裝。

3)方法3:使用gopm包管理工具,后面詳解。

4)方法4:啟用GoModules,并設置GOPROXY使用代理。

這里提供手動安裝依賴的方法,只需要安裝一次,其它各種開發(fā)環(huán)境都可以共享使用。

4.1、gomodule

自從Go官方推出v1.11之后,增加新的依賴管理模塊并且更加易于管理項目中所需要的模塊。模塊是存儲在文件樹中的Go包的集合,其根目錄中包含go.mod文件。go.mod文件定義了模塊的路徑,它也是用于根目錄的導入路徑,以及它的依賴性要求。每個依賴性要求都被寫為模塊路徑和特定語義版本。

從Go1.11開始,Go允許在$GOPATH/src外的任何目錄下使用go.mod創(chuàng)建項目。在$GOPATH/src中,為了兼容性,Go命令仍然在舊的GOPATH模式下運行。當module功能啟用時,GOPATH在項目構建過程中不再擔當import的角色,但它仍然存儲下載的依賴包,具體位置在$GOPATH/pkg/mod。

為了保持與兼容,環(huán)境變量如下設置:

GOROOT:不需要設置,設置了也沒關系GOPATH:保持默認。設置其它目錄也可以,但項目代碼不能放在%GOPATH%\src目錄下,否則gomodule需要明確啟用GO111MODULE:保持默認。GOPROXY:值為https://goproxy.io。設置代理,啟用模塊后,用于下載需要翻墻才能訪問的包。其它可用的代理網(wǎng)址:

https://goproxy.io

https://gocenter.io

Go官方推出官方模塊代理是(被墻狀態(tài));github上的鏡像倉庫:/goproxyio/goproxy。

這樣設置的好處是,當項目源代碼在%GOPATH%\src目錄下時,使用舊版本的模式查

找第三方工具、包;當項目源代碼不在%GOPATH%\src目錄下,并且其父路徑上的任

何一個目錄有go.mod文件,就自動啟用gomodule。

GO111MODULE有以下幾種值:

off:go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種通過vendor目錄或者GOPATH模式來查找。on:go命令行會使用modules,而一點也不會去GOPATH目錄下查找。auto:默認值,go命令行將會根據(jù)當前目錄來決定是否啟用module功能。這種情況下可以分為兩種情形:當前目錄在GOPATH/src之外,且該目錄包含go.mod文件,或者該目錄是包含go.mod文件的目錄的子目錄。

打開命令行,保證當前目錄不是%GOPATH%及其子目錄,執(zhí)行goget即可正常安裝第三方工具包。

4.2、gopm

gopm是Go的一個包管理工具,有如下特性:

無需Git和Hg等版本管理工具,就可以下載指定版本的Go語言包可以解決翻墻問題,在國內有加速效果只能下載依賴的包的源碼,不能編譯安裝

官方網(wǎng)址:https://gopm.io

安裝方法:goget‐u/gpmgo/gopm

gopm基本用法:

#查看當前工程依賴

gopmlist

#顯示依賴詳細信息

gopmlist‐v

#列出文件依賴

gopmlist‐t[file]

#拉取依賴到緩存目錄

gopmget‐rxxx

#僅下載當前指定的包

gopmget‐dxxx

#拉取依賴到$GOPATH

gopmget‐gxxx

#檢查更新所有包

gopmget‐uxxx

#拉取到當前所在目錄

gopmget‐lxxx

#運行當前目錄程序

gopmrun

#生成當前工程的gopmfile文件用于包管理

gopmgen‐v

#根據(jù)當前項目gopmfile鏈接依賴并執(zhí)行goinstall

gopminstall‐v

#更新當前依賴

gopmupdate‐v

#清理臨時文件

gopmclean

#編譯到當前目錄

gopmbin

5、編寫Go語言代碼的IDE或編輯工具

5.1、基于VSCode的Go開發(fā)環(huán)境

5.1.1、安裝VSCode

VSCode全稱是VisualStudioCode,是微軟開發(fā)的免費開源的現(xiàn)代化輕現(xiàn)級代碼編輯器,支持幾乎所有主流的開發(fā)語言的語法高亮、智能代碼補全、自定義快捷鍵、括號匹配和顏色區(qū)分、代碼片段、代碼對比Diff、GIT命令等特性,支持插件擴展,并針對網(wǎng)頁開發(fā)和云端應用開發(fā)做了優(yōu)化。軟件跨平臺支持Win、Mac以及Linux,運行流暢,可謂是微軟的良心之作。

5.1.2、安裝插件

進入VSCode,單擊左側的擴展圖標,或者按Ctrl+Shift+X快捷鍵,即可打開擴展管理頁面:

常用插件列表有:

Bookmarks書簽BracketPairColorizer2括號按層級彩色顯示Chinese(Simplified)LanguagePackforVisualStudioCode簡體中文語言包GoGolang語言開發(fā)插件koroFileHeader用于生成文件頭、函數(shù)等的注釋,支持多種語言ProjectManager項目管理插件,可以方便的在不同的項目間切換SettingsSync配置同步插件PowerMode超級炫酷的輸入特效插件,給你不一樣的Codding體驗

安裝完Go插件后,打開一個來go文件或項目,VSCode會自動提示安裝依賴,點擊安裝,等待安裝完成即可。如果安裝失敗,參考下面的方法。第三方工具、包的安裝,不論基于什么IDE、編輯?,操作方法都是一致的。

啟用gomodule的,執(zhí)行如下命令,手動安裝:

gopmget‐v‐g/x/tools

gopmget‐v‐g/x/lint

gopmget‐v‐g/x/sync

gopmget‐u‐v‐g/mdempsky/gocode

goinstall‐v/mdempsky/gocode

goget‐u‐v/uudashr/gopkgs/cmd/gopkgs

goget‐u‐v/ramya‐rao‐a/go‐outline

goget‐u‐v/acroca/go‐symbols

goget‐u‐v/x/tools/cmd/guru

goinstall‐v/x/tools/cmd/gorename

goget‐u‐v/go‐delve/delve/cmd/dlv

goget‐u‐v/rogpeppe/godef

gopmget‐u‐v‐g/sqs/goreturns

goinstall‐v/sqs/goreturns

goinstall‐v/x/lint/golint

#gopmget‐v‐g‐g/x/tools/cmd/gopls

goinstall‐v/x/tools/cmd/gopls

gopmget‐u‐v‐g/stamblerre/gocode

gobuild‐o%GOPATH%\bin\gocode‐gomod.exe/stamblerre/gocode

5.1.3、常用配置

修改配置的方法:文件-首選項-設置,或者快捷鍵Ctrl+.(需要先將焦點移出編輯

?,比如關閉所有標簽頁,或者打開左側的資源管理?即可)。單擊右上解的{},可以打開settings.json文件,手動修改配置。

這是我在用的配置(settings.json文件的部分內容),在此分享給大寫。

{

"files.autoGuessEncoding":true,

"files.trimFinalNewlines":true,

"files.trimTrailingWhitespace":true,

"editor.lineNumbers":"relative",//相對行號

"editor.fontSize":18,

"editor.renderWhitespace":"all",

"editor.renderControlCharacters":true,

"editor.wordWrapColumn":100,

"editor.rulers":[

"editor.wrappingIndent":"indent",

"editor.fontLigatures":true,

"editor.formatOnPaste":true,

"editor.formatOnType":true,

"editor.acceptSuggestionOnEnter":"off",

"editor.quickSuggestions":{

"comments":true,

"strings":true

"editor.suggest.localityBonus":true,

"editor.suggestSelection":"recentlyUsedByPrefix",

"editor.formatOnSave":true,

"editor.mouseWheelZoom":true,

"breadcrumbs.enabled":true,

"workbench.editor.highlightModifiedTabs":true,

"search.showLineNumbers":true,

"search.useIgnoreFiles":false,

"search.followSymlinks":false,

"debug.inlineValues":true,

"debug.openExplorerOnEnd":true,

"debug.allowBreakpointsEverywhere":true,

"egrated.shell.windows":"C:\\WINDOWS\\System32\\cmd.exe",

"git.path":"git.exe",

"mptToSaveFilesBeforeCommit":true,

"git.showPushSuccessNotification":true,

"powermode.enabled":true,

"powermode.enableShake":false,

"sync.autoUpload":true,

"go.autocompleteUnimportedPackages":true,

"go.inferGopath":true,

"go.useCodeSnippetsOnFunctionSuggest":true,

"go.coverageOptions":"showCoveredCodeOnly",

"go.gotoSymbol.includeImports":true,

"go.useCodeSnippetsOnFunctionSuggestWithoutType":true,

"go.buildOnSave":"off",

"explorer.confirmDragAndDrop":false,

"explorer.openEditors.visible":0,

"fileheader.configObj":{

"createFileTime":false,

"language":{

"go":{

"head":"http://",

"middle":"http://",

"end":"http://"

"autoAdd":false,//自動添加文件頭部注釋

"autoAlready":true,//僅支持的語言自動添加頭部注釋

"headInsertLine":{

"php":2

"beforeAnnotation":{

"py":"#!/usr/bin/envpython\n#coding=UTF‐8",

"go":"http://Package"

//函數(shù)注釋Ctrl+Alt+T

"fileheader.cursorMode":{},

//文件頭注釋Ctrl+Alt+I

"fileheader.customMade":{

"custom_string_obkoro1":"Copyright(C)SuzhouKedaTechnologyCo.,Ltd.Allrightsreserved."

"Author":"zhuyadong@",

"Date":"Donotedit",//文件創(chuàng)建時間(不變)

"LastEditors":"zhuyadong",//文件最后編輯者

"LastEditTime":"Donotedit",//文件最后編輯時間

}

5.2、GoLand

GoLand是JetBrains公司推出的商業(yè)Go語言集成開發(fā)環(huán)境(IDE)。GoLand同樣基于IntelliJ平臺開發(fā),支持JetBrains的插件體系。JetBrains還有其它眾多IDE,比如IDEA,WebStorm,PyCharm,PHPStorm等。

雙擊按照向導完成安裝即可。由于是商業(yè)IDE,只能免費試用30天。網(wǎng)上有破解方

法。如果條件允許,還是建議支持廠商購買正版。第三方工具、包的安裝,參考VSCode開發(fā)環(huán)境中插件安裝一節(jié)。

5.3、Vim

Vim又稱為神級文本編輯?,支持眾多特性,速度飛快,有很多在牛都用它寫代碼。使用Vim寫Go代碼,需要插件vim‐go,官方地址:/BroQiang/vim-go-ide。

如果有VPN,可以直接訪問的話,執(zhí)行命令:GoInstallBinaries可以自動安裝依賴的第三方工具。詳細配置就不介紹了,對于熟悉Vim的同學不難,不熟悉的也沒必要浪費時間折騰,安心使用VSCode或GoLand就好了。

第三方工具、包的安裝,參考VSCode開發(fā)環(huán)境中插件安裝一節(jié)。vim-go插件依賴的第三方包列表:

goget‐u‐v/mdempsky/gocode

goget‐u‐v‐d/stamblerre/gocode

gobuild‐o%GOPATH%\bin\gocode‐gomod.exe/stamblerre/gocode

goget‐u‐v/x/tools/cmd/guru

goget‐u‐v/x/tools/cmd/gorename

goget‐u‐v/go‐delve/delve/cmd/dlv

goget‐u‐v/rogpeppe/godef

goget‐u‐v/x/lint/golint

goget‐u‐v/x/tools/gopls

goget‐u‐v/zmb3/gogetdoc

goget‐u‐v/davidrjenni/reftools/cmd/fillstruct

goget‐u‐v/fatih/motion

goget‐u‐v/kisielk/errche

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論