02-go的IDE安裝

02-go的IDE安裝

此篇文章是在go已經安裝的前提下進行的,如果go還沒有安裝請參考這篇文章 01-go安裝。

本文章使用的是vscode作為go IDE,所以需要提前安裝好vscode,并且是在linux系統下。

當前系統為linux mint 19,ubuntu deepin等系統類似。

安裝擴展插件

打開vscode編輯器,在擴展中搜索 go 關鍵字,不出所料應該第一個插件就是了,如圖:

在這里插入圖片描述
然后點擊安裝,安裝完成之后需要安裝一些go工具,主要有以下:

  • gocode
  • gopkgs
  • go-outline
  • go-symbols
  • guru
  • gorename
  • gotests
  • gomodifytags
  • impl
  • fillstruct
  • goplay
  • godoctor
  • dlv
  • gocode-gomod
  • godef
  • goreturns
  • golint

一共是17個工具。下面分別簡要介紹以下這些工具是做什么用的。

工具說明連接
gocode代碼自動補全連接
gopkgs自動補全未導入包連接
go-outline在當前文件中查找引用連接
go-symbols在項目路徑下查找引用連接
guru查詢所有引用連接
gorename重命名符號連接
gotests單元測試連接
gomodifytags修改結構體標簽連接
impl新建接口連接
fillstruct結構體成員默認值連接
goplay運行當前go文件連接
godoctor重構引擎連接
dlv調試工具連接
gocode-gomodgo模塊管理連接
godef跳轉到聲明連接
goreturns格式化代碼連接
golintlint工具連接

安裝go工具

在vscode中使用快捷鍵 Ctrl + Shift + P 調出命令界面,然后輸入 go install,然后選擇 Update Tools,如圖:

在這里插入圖片描述

緊接著會出現工具選擇,一般我們全部選擇,選擇完成之后回車即可。

在這里插入圖片描述

通過快捷鍵Ctrl + Tab上的那個按鍵調用出終端,點擊輸出選項,我們會看到有一些工具安裝成功了,有一些安裝失敗了,如下:

在這里插入圖片描述

我們也可以在GOPATH目錄下查看已經成功安裝了哪些工具:

在這里插入圖片描述

如果全部成功安裝會這樣顯示:

在這里插入圖片描述

由此可見我們只成功安裝了8個工具,下面我們來安裝剩下的9個工具。

在項目下創建pkg/mod文件夾,然后在mod文件夾下創建 golang.org/x/,此時切換到此文件夾下,打開終端執行:

git clone https://github.com/golang/tools.git

此時x目錄下會出現tools文件夾。

切換到$GOPATH目錄下,打開終端輸入以下命令安裝,安裝那些你上一步沒有成功的插件。分別是:

  • go-outline,執行go install github.com/lukehoban/go-outline
  • go-symbols,執行go install github.com/newhook/go-symbols
  • gocode,執行go install github.com/mdempsky/gocode
  • godef,執行go install github.com/rogpeppe/godef
  • godoctor,執行go install github.com/godoctor/godoctor
  • gorename,執行go install golang.org/x/tools/cmd/gorename
  • gotests,執行go install github.com/cweill/gotests
  • guru,執行go install golang.org/x/tools/cmd/guru
  • impl,執行go install github.com/josharian/impl

如果golint沒有安裝成功,使用需要在mod目錄下創建github.com目錄,然后在github.com目錄下打開終端執行,git clone https://github.com/golang/lint.git,最后安裝 go install golang.org/x/lint/golint

為了配合新的包管理還有提高代碼提示性能,建議安裝下面兩個工具:

  • goimports
  • gopls
go install golang.org/x/tools/cmd/goimports
go install golang.org/x/tools/cmd/gopls

這里有一個小訣竅,就是發現哪個不能下載就把這個包手動git clone到$GOPATH/pkg/mod文件夾下,然后在安裝,要注意創建相應的文件夾,例如常見的github.com和golang.org/x。

調試配置

1.點擊vscode的運行按鈕或者快捷鍵Ctrl + Shift + D,在出現的頁面中選擇create a launch.json file,然后選擇Go

在這里插入圖片描述

在這里插入圖片描述

此時會在項目下創建.vscode文件夾和其文件夾下的 lanuch.json 文件。

2.在lanuch.json文件中配置如下:

{// 使用 IntelliSense 了解相關屬性。 // 懸停以查看現有屬性的描述。// 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Launch","type": "go","request": "launch","mode": "auto","host": "127.0.0.1","port": 2345,"program": "${fileDirname}","env": {},"args": [],"showLog": false}]
}

3.測試調試功能

在項目文件夾下創建src文件夾,用于存放代碼,然后在創建一個main.go文件,內容如下:

package mainimport "fmt"func main() {fmt.Println("Hello, 世界")
}

我們在fmt.Println("Hello, 世界")這一段代碼的前面打上斷點,然后按F5,就會出現調試頁面:

在這里插入圖片描述

到了這一步你就可以調試go程序了。

調試端口是2345,要盡量比較其他程序占用此端口,否則會導致失敗。

修正代碼提示延遲

如果代碼提示并不是很慢不需要配置,此處略過。如果出現提示很慢,甚至不提示,可以參照下面教程配置一下。

一般這種情況出現在windows下,linux基本滅有。

在vscode設置界面搜索go.useLanguageServer,然后勾選,這是會有提示是否重新加載,選擇是即可。同樣也可以在 setting.json 文件內追加設置

"go.useLanguageServer": true

這樣做的目的是啟動golsp,使得gomod下代碼提示速度增強。修改后vscode需要重啟。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535986.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535986.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535986.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

03-go的包管理

03-go的包管理 在Go 1.11和1.12版本時就已經支持了對包管理功能,但還是相對有一些小的問題,不過在后續的版本中已經陸續解決。增加包管理是必然趨勢,一門好的語言,不光要有好的生態,優美的語法,包管理也是必不可缺的功能,例如大名鼎鼎 npm,就連 C++ 也要推出包管理,好…

04-go命令使用

04-go命令使用 此篇文章是基于GO 1.14.1,如果版本相差過大,還是以版本的命令為準。 命令簡介 bug—用于提交使用過程中的bug。build—用于構建二進制可執行文件。clean—用于刪除在構建過程中生成的臨時文件。doc—用于生成項目文檔。env—查看go的環境變量。fix—把指定代…

go設計模式之代理模式

go設計模式之代理模式 代理模式的基本思想是,需要服務的代碼只與代理類打交道,而實際工作的部分隱藏在代理的背后。它的主要的目的是希望隱藏實現的部分,從而消除代碼的耦合。 舉個例子來說就是像電腦桌面的快捷方式。電腦對某個程序提供一個快捷方式(代理對象),快捷方…

go設計模式之單例模式

在這里插入圖片描述# go設計模式之單例模式 在軟件開發時,經常會遇到有些對象需要保證只有一個實例的,那么這種設計模式就應用而生。 定義 單例模式,也叫單子模式,是一種常用的軟件設計模式,屬于創建型模式的一種。在應用這個模式時,單例對象的類必須保證只有一個實例…

go設計模式之裝飾器模式

go設計模式之裝飾器模式 再寫這篇文章時,我已經看了很多其他人發表的類似文章,大概看了這么多吧。 亓斌的設計模式-裝飾者模式(Go語言描述)jeanphorn的Golang設計模式之裝飾模式七八月份的太陽的Golang裝飾器設計模式(九)我個人都不是很滿意,所以才自己從頭開始寫關于go語…

go切片窺探

go切片窺探 切片(slice)是對數組一個連續片段的引用(該數組我們稱之為相關數組,通常是匿名的),所以切片是一個引用類型(因此更類似于C/C++中的數組類型,或者Python中的list類型)。這個片段可以是整個數組,或者是由起始和終止索引標識的一些項的子集。需要注意的是,…

go反射機制與類型識別

go反射機制與類型識別 在寫 go 程序的時候,難免會遇到使用反射機制獲取一些結構體或者變量的動態類型,java 和 C# 高級編程語言提供了很好的反射機制,但是在 C 語言中基本是不存在的,C++ 需要有很多語法糖來實現反射,但是技術要求很高,go 語言雖然沒有泛型,單是基本的反…

go反射實戰之數組的查找Find過濾Filter函數實現

go反射實戰之數組的查找過濾函數實現 在使用的go的時候,如果想要在數組中查找一個元素每次都要寫一個循環來查找,過濾也是一樣,沒有一個能打的函數來幫助我們干這些事情,通過前面的學習,我們可以通過反射實現Find和Filter函數。 上篇文章連接 go反射機制與類型識別。 在…

go利用反射實現任意類型切片刪除元素

go利用反射實現任意類型切片刪除元素 在使用Go切片的時候,我們經常會需要刪除切片內的元素,但是由于類型的限制,導致我們需要寫很多類似的函數,那么下面我們通過go的反射機制實現一個任意類型的切片元素刪除。 這里只是講如何實現的教程,同類型還有很多函數我們可以實現…

go實現數組切片洗牌函數Shuffle

go實現數組切片洗牌函數Shuffle 在深度學習、機器學習中,我們經常會使用到一個叫 Shuffle 函數,我一般叫打亂函數,也有人叫 洗牌 函數,就是聽著高級點, 它可以幫助我們打亂數據集,那么在go中我們如何實現一個呢? 大家可以直接使用我寫的一個工具庫 lodago,有點lodash…

go validator使用教程

go validator使用教程 很多時候在B/S開發過程中,經常會遇到對參數的校驗工作,一般客戶端需要提前驗證一次提交的數據是否合理,以減少后端的壓力,而后端是必須要對數據做驗證的。 一般驗證的方式大多都是if-else,這種方式會讓你掉入無底的深淵,就像下面一樣。 [圖片來源…

DeepL與有道翻譯對比

DeepL與有道翻譯對比 近期有一個叫DeepL的翻譯工具很火。DeepL Translator 是于2017年8月由 DeepL GmbH(一家由Linguee支持的創業公司)推出的翻譯服務,支持漢語、英語、德語、法語、日語、西班牙語、意大利語、荷蘭語及波蘭語之間的翻譯。其…

golang代理轉發基礎

golang代理轉發基礎 go標準庫已經實現了一個反向代理工具,通過代理將客戶端的請求轉發到代理服務器。 什么是反向代理? 維基百科解釋: ”In computer networks , a reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or…

使用Go和WebSockets構建實時聊天服務器

使用Go和WebSockets構建實時聊天服務器 源代碼連接 Go Chat 現在web應用變得越來越復雜,前端開發人員的工資也是水漲船高。現在的web程序有些是可以實時更新的,用戶無需主動調用服務器或刷新瀏覽器。在早期,開發人員需要依靠ajax請求來創建非常接近實時的應用程序,現在他們…

如何更新Postgresql的Jsonb數組

如何更新Postgresql的Jsonb數組 假設你決定將數據以json或者jsonb的形式存儲在數據庫中,然后發現你剛剛給自己制造了新的問題,而這些問題是以前沒有的。 jsonb是一個強大的工具,但它也有一定的代價,因為你需要調整查詢和處理數據…

golang操作postgresql數據庫jsonb類型

golang操作postgresql數據庫jsonb類型 本文以案例為主,少言,自悟。 推薦一個測試sql的網站 SQL操作 // 創建一個帶有jsonb列的表 CREATE TABLE items (id SERIAL PRIMARY KEY,attrs JSONB );// 插入一條數據 INSERT INTO items (attrs)

Angular模板高級使用

Angular模板高級使用 使用ng-template Angular自帶一個叫做ng-template的組件,它允許我們聲明Angular模板的任何部分。這是給我們的模板賦予動態性的一種很好的方式,讓我們能夠把我們的代碼傳遞給其他組件。 在app.component.html文件中寫一個ng-template組件。 <ng-t…

golang定時任務的使用

golang定時任務的使用 由于 golang 標準庫內沒有比較好的定時任務包,所以這里將使用一個第三方的 cron 包,由于此包存在一些不適用的地方,所以對此做了一些簡單封裝。 cron簡介 robfig/cron是一個第三方開源的任務調度庫,也就是我們平時說的定時任務。 Github官方文檔安…

go之樹型結構深度理解

go之樹型結構深度理解 如果你是一個編程人員,或多或少對樹型結構都有一定的認識,我個人對樹型數據結構是又愛又恨。這篇文章主要講解一些關于tree的數據結構以及使用。 什么是樹? 數組、列表、隊列、隊列、堆棧都是以一個集合的形式存儲數據,一般稱它們被稱為 "線性…

go之樹型結構深度理解補充

go之樹型結構深度理解補充 在上一篇中借用了 Ilija Eftimov 文章來講解了tree的定義和一些方法。這篇文章主要是講解在樹型結構中如何判斷節點與節點之間的關系。 A節點是否是B節點的直接上級A節點是否是B節點的可跳躍的上級(即中間隔開幾個節點的間接上級)上一篇文章連接 g…