本文小編為大家詳細(xì)介紹“windows系統(tǒng)下如何搭建Golang開發(fā)環(huán)境”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“windows系統(tǒng)下如何搭建Golang開發(fā)環(huán)境”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
創(chuàng)新互聯(lián)建站長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為明水企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè),明水網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
Go語言(又稱Golang),起源于2007年,并在2009年由Google正式對(duì)外發(fā)布。Go語言是一種靜態(tài)強(qiáng)類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語言,它的主要目標(biāo)是“兼具 Python 等動(dòng)態(tài)語言的開發(fā)速度和 C/C++ 等編譯型語言的性能與安全性”。Go語言目前可以達(dá)到C/C++ 80%的運(yùn)行性能,其編譯速度遠(yuǎn)快于Java和C/C++。
與C++相比,Go并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數(shù)等功能,但增加了 切片(Slice) 型、并發(fā)、管道、垃圾回收、接口(Interface)等特性的語言級(jí)支持。Go 2.0版本將支持泛型,對(duì)于斷言的存在,則持負(fù)面態(tài)度,同時(shí)也為自己不提供類型繼承來辯護(hù)。
Go語言是編程語言設(shè)計(jì)的又一次嘗試,是對(duì)類C語言的重大改進(jìn),它不但能讓你訪問底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。
GO語言有如下特性:
靜態(tài)編譯
垃圾回收
簡潔的符號(hào)和語法
平坦的類型系統(tǒng)
基于CSP的并發(fā)模型。
高效簡單的工具鏈。
豐富的標(biāo)準(zhǔn)庫
Go語言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡單、并發(fā)性好、語言設(shè)計(jì)良好、執(zhí)行性能好”等優(yōu)勢(shì),目前國內(nèi)諸多 IT 公司均已采用Go語言開發(fā)項(xiàng)目,特別是在大型互聯(lián)網(wǎng)公司有著廣泛的應(yīng)用。
很多重要的開源項(xiàng)目都是使用Go語言開發(fā)的:
1)Docker:火熱的容?化技術(shù)
2)Kubernetes:Goole Borg 的開源實(shí)現(xiàn)
3)LXD:另一個(gè)容?化技術(shù),其定位是系統(tǒng)容?,直接對(duì)標(biāo)虛擬機(jī)。
4)Etcd:類似 zookeeper 的高可用 key-value 存儲(chǔ)
5)TIDB:國人開發(fā)的 Goole spanner 的開源實(shí)現(xiàn)。定位于在線事務(wù)處理/在線分析處理( HTAP: Hybrid Transactional/Analytical Processing)的融合型數(shù)據(jù)庫產(chǎn)品,實(shí)現(xiàn)了一鍵水平伸縮,強(qiáng)一致性的多副本數(shù)據(jù)安全,分布式事務(wù),實(shí)時(shí)OLAP 等重要特性。同時(shí)兼容 MySQL 協(xié)議和生態(tài),遷移便捷,運(yùn)維成本極低。
Go語言開發(fā)過程中用到的第三方包,需要使用 git 下載,因此 git 是必不可少的。
假設(shè)安裝路徑為 C:\Program Files\Git,需要將以下路徑添加到環(huán)境變量 PATH:
C:\Program Files\Git\bin
C:\Program Files\Git\cmd
這個(gè)地方初學(xué)者需要注意一下,Git默認(rèn)是采用命令行手動(dòng)輸入命令去操作的。還可以像SVN那樣通過UI界面去做操作,只要下載TortoiseGit就好了。
先到GO語言官網(wǎng) Downloads - The Go Programming Language 下載最新版本的GO語言安裝包,雙擊按照向?qū)瓿砂惭b:
Golang開發(fā)環(huán)境涉及到幾個(gè)環(huán)境變量,比較重要的是:GOROOT,GOPATH。使用go env命令就可以查看 Go 的環(huán)境變量,不帶參數(shù)打印所有環(huán)境變量:
λ go env
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\zhuyadong\AppData\Local\go‐build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\zhuyadong\go
set GOPROXY=https://goproxy.io
set GORACE=
set GOROOT=D:\Program\Go
set GOTMPDIR=
set GOTOOLDIR=D:\Program\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=‐g ‐O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=‐g ‐O2
set CGO_FFLAGS=‐g ‐O2
set CGO_LDFLAGS=‐g ‐O2
set PKG_CONFIG=pkg‐config
set GOGCCFLAGS=‐m64 ‐mthreads ‐fmessage‐length=0 ‐fdebug‐prefix‐map=C:\Temp
GOROOT其實(shí)就是Golang的安裝目錄。新版本的GOROOT已經(jīng)不需要設(shè)置了。Golang編譯器安裝后,會(huì)自動(dòng)把%GOROOT%\bin目錄添加到環(huán)境變量PATH。
如下所示,這是我電腦上安裝完 Golang 后,在命令行中輸出的Go版本:
λ go version
2 go version go1.19.2 windows/amd64
可以把GOPATH指向的目錄,理解為工作目錄,其作用是告訴Go命令和其它相關(guān)工具,在哪里找系統(tǒng)上安裝的Go包。
GOPATH可以指向多個(gè)路徑,與其它環(huán)境變量的設(shè)置一樣,用相同的分割符分割。windiows 系統(tǒng)分割符是 ; ,linux 系統(tǒng)分割符是 : 。
默認(rèn)的GOPATH是%USERPROFILE%\go\bin。在沒有Go Modules之前,通常都需要修改GOPATH的值。GOPATH 的目錄結(jié)構(gòu),是約定好的,不可修改:
GOPATH
├─bin 存放安裝的第三方工具
├─pkg 存放編譯的第三方庫
└─src 源碼目錄
├─demo 這是你自已的項(xiàng)目源代碼,每個(gè)項(xiàng)目一個(gè)目錄
└─github.com 這是從 github.com 下載的第三庫、工具的源代碼
go build 在源代碼目錄執(zhí)行該命令,編譯該目錄下的源代碼,生成可執(zhí)行程序或庫。
go install 除了編譯,還進(jìn)行安裝(將生成的結(jié)果拷貝到指定目錄)??蓤?zhí)行程序拷貝到 %GOPATH%\bin,庫拷貝到 %GOPATH%\pkg。
go get 從遠(yuǎn)程倉庫獲取代碼,同時(shí)進(jìn)行編譯和安裝。
由于國內(nèi)眾所周知的網(wǎng)絡(luò)原因,不能直接訪問 golang 的官方網(wǎng)站,由此導(dǎo)致不能自動(dòng)安裝依賴項(xiàng),這也是搭建 Go 開發(fā)環(huán)境最麻煩的地方。為解決網(wǎng)絡(luò)問題,有以下幾種方法:
1)方法1:找一個(gè)可用的 VPN。
2)方法2:安裝失敗后,查看日志,到 github.com 上查找對(duì)應(yīng)的庫,下載到本機(jī)的對(duì)應(yīng)位置,再執(zhí)行 go install 進(jìn)行安裝。
3)方法3:使用 gopm 包管理工具,后面詳解。
4)方法4:啟用 Go Modules,并設(shè)置 GOPROXY 使用代理。
這里提供手動(dòng)安裝依賴的方法,只需要安裝一次,其它各種開發(fā)環(huán)境都可以共享使用。
自從 Go 官方推出 v1.11 之后,增加新的依賴管理模塊并且更加易于管理項(xiàng)目中所需要的模塊。模塊是存儲(chǔ)在文件樹中的 Go 包的集合,其根目錄中包含 go.mod 文件。 go.mod 文件定義了模塊的路徑,它也是用于根目錄的導(dǎo)入路徑,以及它的依賴性要求。每個(gè)依賴性要求都被寫為模塊路徑和特定語義版本。
從 Go 1.11 開始,Go 允許在 $GOPATH/src 外的任何目錄下使用 go.mod 創(chuàng)建項(xiàng)目。在 $GOPATH/src 中,為了兼容性,Go 命令仍然在舊的 GOPATH 模式下運(yùn)行。當(dāng) module 功能啟用時(shí), GOPATH 在項(xiàng)目構(gòu)建過程中不再擔(dān)當(dāng) import 的角色,但它仍然存儲(chǔ)下載的依賴包,具體位置在 $GOPATH/pkg/mod 。
為了保持與兼容,環(huán)境變量如下設(shè)置:
GOROOT: 不需要設(shè)置,設(shè)置了也沒關(guān)系
GOPATH: 保持默認(rèn)。設(shè)置其它目錄也可以,但 項(xiàng)目代碼 不能放在%GOPATH%\src 目錄下,否則 go module 需要明確啟用
GO111MODULE: 保持默認(rèn)。
GOPROXY: 值為 https://goproxy.io 。設(shè)置代理,啟用模塊后,用于下載需要翻墻才能訪問的包。
這樣設(shè)置的好處是,當(dāng)項(xiàng)目源代碼在 %GOPATH%\src 目錄下時(shí),使用舊版本的模式查
找第三方工具、包;當(dāng)項(xiàng)目源代碼不在 %GOPATH%\src 目錄下,并且其父路徑上的任
何一個(gè)目錄有 go.mod 文件,就自動(dòng)啟用 go module。
GO111MODULE 有以下幾種值:
off:go 命令行將不會(huì)支持 module 功能,尋找依賴包的方式將會(huì)沿用舊版本那種通過 vendor 目錄或者 GOPATH 模式來查找。
on:go命令行會(huì)使用 modules,而一點(diǎn)也不會(huì)去 GOPATH 目錄下查找。
auto:默認(rèn)值,go 命令行將會(huì)根據(jù)當(dāng)前目錄來決定是否啟用 module 功能。這種情況下可以分為兩種情形:當(dāng)前目錄在 GOPATH/src 之外,且該目錄包含go.mod 文件,或者該目錄是包含 go.mod 文件的目錄的子目錄。
打開命令行,保證當(dāng)前目錄不是 %GOPATH% 及其子目錄,執(zhí)行 go get 即可正常安裝第三方工具包。
gopm 是 Go 的一個(gè)包管理工具,有如下特性:
無需 Git 和 Hg 等版本管理工具,就可以下載指定版本的 Go 語言包
可以解決翻墻問題,在國內(nèi)有加速效果
只能下載依賴的包的源碼,不能編譯安裝
gopm基本用法:
# 查看當(dāng)前工程依賴
gopm list
# 顯示依賴詳細(xì)信息
gopm list ‐v
# 列出文件依賴
gopm list ‐t [file]
# 拉取依賴到緩存目錄
gopm get ‐r xxx
# 僅下載當(dāng)前指定的包
gopm get ‐d xxx
# 拉取依賴到 $GOPATH
gopm get ‐g xxx
# 檢查更新所有包
gopm get ‐u xxx
# 拉取到當(dāng)前所在目錄
gopm get ‐l xxx
# 運(yùn)行當(dāng)前目錄程序
gopm run
# 生成當(dāng)前工程的 gopmfile 文件用于包管理
gopm gen ‐v
# 根據(jù)當(dāng)前項(xiàng)目 gopmfile 鏈接依賴并執(zhí)行 go install
gopm install ‐v
# 更新當(dāng)前依賴
gopm update ‐v
# 清理臨時(shí)文件
gopm clean
# 編譯到當(dāng)前目錄
gopm bin
5.1.1、安裝VSCode
VSCode 全稱是 Visual Studio Code,是微軟開發(fā)的免費(fèi)開源的現(xiàn)代化輕現(xiàn)級(jí)代碼編輯器,支持幾乎所有主流的開發(fā)語言的語法高亮、智能代碼補(bǔ)全、自定義快捷鍵、括號(hào)匹配和顏色區(qū)分、代碼片段、代碼對(duì)比 Diff、GIT命令 等特性,支持插件擴(kuò)展,并針對(duì)網(wǎng)頁開發(fā)和云端應(yīng)用開發(fā)做了優(yōu)化。軟件跨平臺(tái)支持 Win、Mac 以及 Linux,運(yùn)行流暢,可謂是微軟的良心之作。
5.1.2、安裝插件
進(jìn)入 VSCode,單擊左側(cè)的 擴(kuò)展圖標(biāo),或者按 Ctrl+Shift+X 快捷鍵,即可打開擴(kuò)展管理頁面:
常用插件列表有:
Bookmarks書簽
Bracket Pair Colorizer 2括號(hào)按層級(jí)彩色顯示
Chinese(Simplified) Language Pack for Visual Studio Code簡體中文語言包
Go Golang 語言開發(fā)插件
koroFileHeader 用于生成文件頭、函數(shù)等的注釋,支持多種語言
Project Manager 項(xiàng)目管理插件,可以方便的在不同的項(xiàng)目間切換
Settings Sync 配置同步插件
Power Mode 超級(jí)炫酷的輸入特效插件,給你不一樣的 Codding 體驗(yàn)
安裝完 Go 插件后,打開一個(gè)來 go 文件或項(xiàng)目,VSCode 會(huì)自動(dòng)提示安裝依賴,點(diǎn)擊“安裝”,等待安裝完成即可。如果安裝失敗,參考下面的方法。第三方工具、包的安裝,不論基于什么IDE、編輯?,操作方法都是一致的。
啟用 go module 的,執(zhí)行如下命令,手動(dòng)安裝:
gopm get ‐v ‐g golang.org/x/tools
gopm get ‐v ‐g golang.org/x/lint
gopm get ‐v ‐g golang.org/x/sync
gopm get ‐u ‐v ‐g github.com/mdempsky/gocode
go install ‐v github.com/mdempsky/gocode
go get ‐u ‐v github.com/uudashr/gopkgs/cmd/gopkgs
go get ‐u ‐v github.com/ramya‐rao‐a/go‐outline
go get ‐u ‐v github.com/acroca/go‐symbols
go get ‐u ‐v golang.org/x/tools/cmd/guru
go install ‐v golang.org/x/tools/cmd/gorename
go get ‐u ‐v github.com/go‐delve/delve/cmd/dlv
go get ‐u ‐v github.com/rogpeppe/godef
gopm get ‐u ‐v ‐g github.com/sqs/goreturns
go install ‐v github.com/sqs/goreturns
go install ‐v golang.org/x/lint/golint
# gopm get ‐v ‐g ‐g golang.org/x/tools/cmd/gopls
go install ‐v golang.org/x/tools/cmd/gopls
gopm get ‐u ‐v ‐g github.com/stamblerre/gocode
go build ‐o %GOPATH%\bin\gocode‐gomod.exe github.com/stamblerre/gocode
5.1.3、常用配置
修改配置的方法:文件 -> 首選項(xiàng) -> 設(shè)置,或者快捷鍵 Ctrl+.(需要先將焦點(diǎn)移出編輯
?,比如關(guān)閉所有標(biāo)簽頁,或者打開左側(cè)的資源管理?即可)。單擊右上解的 {} ,可以打開 settings.json 文件,手動(dòng)修改配置。
這是我在用的配置(settings.json 文件的部分內(nèi)容),在此分享給大寫。
{
"files.autoGuessEncoding": true,
"files.trimFinalNewlines": true,
"files.trimTrailingWhitespace": true,
"editor.lineNumbers": "relative", // 相對(duì)行號(hào)
"editor.fontSize": 18,
"editor.renderWhitespace": "all",
"editor.renderControlCharacters": true,
"editor.wordWrapColumn": 100,
"editor.rulers": [
100
],
"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,
"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",
"git.path": "git.exe",
"git.promptToSaveFilesBeforeCommit": 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": "// ",
"middle": "// ",
"end": "//"
}
},
"autoAdd": false, // 自動(dòng)添加文件頭部注釋
"autoAlready": true, // 僅支持的語言自動(dòng)添加頭部注釋
"headInsertLine": {
"php": 2
},
"beforeAnnotation": {
"py": "#!/usr/bin/env python\n# coding=UTF‐8",
"go": "// Package "
}
},
// 函數(shù)注釋 Ctrl+Alt+T
"fileheader.cursorMode": {},
// 文件頭注釋 Ctrl+Alt+I
"fileheader.customMade": {
"custom_string_obkoro1": "<Copyright(C) Suzhou Keda Technology Co., Ltd. All rights reserved.>"
"Author": "zhuyadong@kedacom.com",
"Date": "Do not edit", // 文件創(chuàng)建時(shí)間(不變)
"LastEditors": "zhuyadong", // 文件最后編輯者
"LastEditTime": "Do not edit", // 文件最后編輯時(shí)間
}
}
GoLand 是 JetBrains 公司推出的商業(yè) Go 語言集成開發(fā)環(huán)境(IDE)。GoLand 同樣基于 IntelliJ 平臺(tái)開發(fā),支持 JetBrains 的插件體系。JetBrains 還有其它眾多IDE,比如 IDEA,WebStorm,PyCharm, PHPStorm 等。
雙擊按照向?qū)瓿砂惭b即可。由于是商業(yè)IDE,只能免費(fèi)試用 30 天。網(wǎng)上有破解方
法。如果條件允許,還是建議支持廠商購買正版。第三方工具、包的安裝,參考 VSCode 開發(fā)環(huán)境中插件安裝一節(jié)。
Vim 又稱為神級(jí)文本編輯?,支持眾多特性,速度飛快,有很多在牛都用它寫代碼。使用 Vim 寫 Go 代碼,需要插件 vim‐go 。
如果有 VPN,可以直接訪問 golang.org 的話,執(zhí)行命令:GoInstallBinaries 可以自動(dòng)安裝依賴的第三方工具。詳細(xì)配置就不介紹了,對(duì)于熟悉 Vim 的同學(xué)不難,不熟悉的也沒必要浪費(fèi)時(shí)間折騰,安心使用 VSCode 或 GoLand 就好了。
vim-go 插件依賴的第三方包列表:
go get ‐u ‐v github.com/mdempsky/gocode
go get ‐u ‐v ‐d github.com/stamblerre/gocode
go build ‐o %GOPATH%\bin\gocode‐gomod.exe github.com/stamblerre/gocode
go get ‐u ‐v golang.org/x/tools/cmd/guru
go get ‐u ‐v golang.org/x/tools/cmd/gorename
go get ‐u ‐v github.com/go‐delve/delve/cmd/dlv
go get ‐u ‐v github.com/rogpeppe/godef
go get ‐u ‐v golang.org/x/lint/golint
go get ‐u ‐v golang.org/x/tools/gopls
go get ‐u ‐v github.com/zmb3/gogetdoc
go get ‐u ‐v github.com/davidrjenni/reftools/cmd/fillstruct
go get ‐u ‐v github.com/fatih/motion
go get ‐u ‐v github.com/kisielk/errcheck
go get ‐u ‐v github.com/josharian/impl
go get ‐u ‐v github.com/jstemmer/gotags
go get ‐u ‐v golang.org/x/tools/cmd/goimports
go get ‐u ‐v github.com/fatih/gomodifytags
go get ‐u ‐v honnef.co/go/tools/cmd/keyify
go get ‐u ‐v github.com/koron/iferr
go get ‐u ‐v github.com/klauspost/asmfmt/cmd/asmfmt
# 支持 go mod
go get ‐u ‐v github.com/golangci/golangci‐lint/cmd/golangci‐lint
# 1.不支持 go mod 2.已廢棄,vim默認(rèn)使用它,可以配置為 golangci‐lint
go get ‐u ‐v github.com/alecthomas/gometalinter
除了 VSCode、GoLand 和 Vim ,還有其它一些工具可以用來寫 Go 代碼,有興趣的可
以嘗試:
LiteIDE:是一款開源、跨平臺(tái)的輕量量 Go 語言集成開發(fā)環(huán)境。
Eclipse:是著名的跨平臺(tái)開源集成開發(fā)環(huán)境(IDE)。最初主要用來做Java語言開發(fā),可以通過插件使其支持 JavaScript、C++、Python、PHP、Go、Rust 等語言的開發(fā)。
Sublime:是一個(gè)代碼編輯?,支持多種編程語言的語法亮度,擁有優(yōu)秀的代碼自動(dòng)完成功能。通過插件可以使其支持 Go 語言開發(fā)。
讀到這里,這篇“windows系統(tǒng)下如何搭建Golang開發(fā)環(huán)境”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前題目:windows系統(tǒng)下如何搭建Golang開發(fā)環(huán)境
文章鏈接:http://aaarwkj.com/article36/gjihpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、外貿(mào)網(wǎng)站建設(shè)、外貿(mào)建站、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)