https://marketplace.visualstudio.com/items?itemName=ms-vscode.Go
https://gocn.vip/topics/9936
1安装go
这里选择安装 go1.12.5版本
下载地址:https://studygolang.com/dl
安装过程就不想细说了,安装完会自动配置GOROOT环境变量。
GOROOT :Go语言的安装路径。
GOBIN:Go 的二进制文件存放目录(不设置默认成生的位置%GOROOT%\bin)
GOPATH :Go语言的工作空间,不能与 GOROOT 相同。
Path : %GOROOT%\bin\ 和 %GOPATH%\bin\
GOPATH 下应有三个目录:
src :包含Go的源文件,它们被组织成包(每个目录都对应一个包)
pkg:包含包对象,也即编译好的库文件 *.a
bin:包含可执行命令
查看go的环境变量使用go env
下面是批处理设置GO的工作目录 setx.exe win7以上系统自带
@ECHO OFF
IF EXIST %GOROOT%\bin\go.exe (
IF EXIST %systemroot%\system32\setx.exe (
rem 处理器架构 386/amd64/arm
rem @SETX GOARCH 386 /m
rem 操作系统 darwin/freebsd/linux/windows
rem @SETX GOOS windows /m
rem 设置工作目录 /m是用户变量,去掉/m是设置成系统变量
echo 设置工作目录
rem @setx GOPATH “%GOPATH%;D:\go” /m
@setx GOPATH “D:\go” /m
echo 设置工作的安装目录
@setx GOBIN “D:\Go\bin” /m
rem @setx GOBIN “%GOBIN%;D:\Go\bin” /m
echo 启用Go Modules功能,并配置Go的代理
@setx GO111MODULE “on” /m
@setx GOPROXY “https://goproxy.io” /m
echo.
echo.
echo.
echo.
echo.
ECHO 设置成功!
echo.
echo.
echo.
echo.
echo.
) ELSE (
@ECHO ON
@ECHO 未能找到%systemroot%\system32\setx.exe,请下载setx.exe程序
)
) ELSE (
@ECHO ON
@ECHO GO安装目录不正确,未能按照预期计划执行
)
@PAUSE
2.安装git
下载地址:https://git-scm.com/downloads
下载插件需要用到git工具下载源码
3.安装visual studio code
下载地址:https://code.visualstudio.com/
打开vscode 按快捷键 ctrl+shift+x 搜索以下插件
go
Chinese (Simplified) Language Pack for Visual Studio Code
Code Runner
vscode
vscode时需要安装的插件,注意后面的名称
github.com/mdempsky/gocode gocode
github.com/uudashr/gopkgs/cmd/gopkgs gopkgs
github.com/ramya-rao-a/go-outline go-outline
github.com/acroca/go-symbols go-symbols
golang.org/x/tools/cmd/guru guru
golang.org/x/tools/cmd/gorename gorename
github.com/derekparker/delve/cmd/dlv dlv
github.com/stamblerre/gocode gocode-gomod
github.com/rogpeppe/godef godef
github.com/ianthehat/godef godef-gomod
github.com/sqs/goreturns goreturns
golang.org/x/lint/golint golint
vscode安装go插件很蛋疼,好多插件根本就不能装,所以就用批处理来做这些事情
此批处理适合当模块设置成GO111MODULE=on
新建一个文件vscode.bat把以下内容复制进去
@echo off
echo 正在运行
echo 下载tools等工具
git clone https://github.com/golang/tools.git C:/Users/Administrator/go/src/golang.org/x/tools
git clone https://github.com/golang/lint C:/Users/Administrator/go/src/golang.org/x/lint
git clone https://github.com/golang/net C:/Users/Administrator/go/src/golang.org/x/net
git clone https://github.com/golang/text C:/Users/Administrator/go/src/golang.org/x/text
git clone https://github.com/golang/crypto C:/Users/Administrator/go/src/golang.org/x/crypto
git clone https://github.com/golang/sys C:/Users/Administrator/go/src/golang.org/x/sys
git clone https://github.com/ramya-rao-a/go-outline.git C:/Users/Administrator/go/src/github.com/ramya-rao-a/go-outline
git clone https://github.com/acroca/go-symbols.git C:/Users/Administrator/go/src/github.com/acroca/go-symbols
git clone https://github.com/rogpeppe/godef.git C:/Users/Administrator/go/src/github.com/rogpeppe/godef
git clone https://github.com/sqs/goreturns.git C:/Users/Administrator/go/src/github.com/sqs/goreturns
git clone https://github.com/cweill/gotests.git C:/Users/Administrator/go/src/github.com/cweill/gotests
git clone https://github.com/josharian/impl.git C:/Users/Administrator/go/src/github.com/josharian/impl
git clone https://github.com/golang/lint.git C:/Users/Administrator/go/src/github.com/golang/lint
git clone https://github.com/mdempsky/gocode.git C:/Users/Administrator/go/src/github.com/mdempsky/gocode
git clone https://github.com/uudashr/gopkgs.git C:/Users/Administrator/go/src/github.com/uudashr/gopkgs
git clone https://github.com/stamblerre/gocode.git C:/Users/Administrator/go/src/github.com/stamblerre/gocode
rem 64位操作系统用
REM git clone https://github.com/derekparker/delve.git C:/Users/Administrator/go/src/github.com/derekparker/
REM git clone https://github.com/go-delve/delve.git C:/Users/Administrator/go/src/github.com/go-delve
cd “C:/Users/Administrator/go”
go install github.com/ramya-rao-a/go-outline
go install golang.org/x/tools/cmd/guru
go install golang.org/x/tools/cmd/gorename
go install github.com/acroca/go-symbols
go install github.com/rogpeppe/godef
go install github.com/sqs/goreturns
go install github.com/cweill/gotests/gotests
go install github.com/josharian/impl
go install github.com/golang/lint/golint
go install github.com/mdempsky/gocode
go install github.com/uudashr/gopkgs/cmd/gopkgs
go build -o C:\Users\Administrator\go\bin\gocode-gomod.exe github.com/stamblerre/gocode
echo 当模块设置成GO111MODULE=on的时候
go install golang.org/x/tools/cmd/goimports
rem 64位操作系统用
REM go install github.com/derekparker/delve/cmd/dlv
REM go get -v -u https://github.com/go-delve/delve/delve/cmd/dlv
@cmd.exe
pause
vscode配置
{
//”files.encoding”: “gb2312”,
“python.linting.flake8Enabled”: true,
“python.formatting.provider”: “yapf”,
// “files.autoGuessEncoding”: true,
“code-runner.executorMap”: {
“javascript”: “node”,
“php”: “C:\php\php.exe”,
“python”: “set PYTHONIOENCODING=utf8 && python”,
“perl”: “perl”,
“ruby”: “C:\Ruby23-x64\bin\ruby.exe”,
“go”: “go run”,
“html”: “"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"”,
“java”: “cd $dir && javac $fileName && java $fileNameWithoutExt”,
“c”: “cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt”
},
“python.pythonPath”: “C:\Program Files\Python37-32\python.exe”,
“go.autocompleteUnimportedPackages”: true,
“go.formatTool”: “goimports”, //GO111MODULE=on的时候设置
// “go.formatTool”: “goreturns”, //在gopath里设置
“go.testFlags”:[“-v”],
“editor.formatOnType”: true, //保存后自动格式化代码(vscode)
“editor.formatOnSave”: true, //保存后自动格式化代码(vscode)
当模块设置成GO111MODULE=auto的时候
把C:/Users/Administrator/go/src C:/Users/Administrator/go/bin复制到gopath下
智能感知
键入时自动完成符号(使用gocode)
键入时的签名帮助(使用gogetdoc或godef + godoc)
将鼠标悬停在符号上的快速信息(使用gogetdoc或godef + godoc)
代码导航
转到或Peek定义符号(使用gogetdoc或godef + godoc)
查找符号的参考和接口的实现(使用guru)
转到文件中的符号或查看文件大纲(使用go-outline)
转到工作区中的符号(使用go-symbols)
代码编辑
用于快速编码的Code Snippets
格式化文件代码保存以及手动格式化(使用goreturns或goimports或gofmt)
符号重命名(使用gorename。注意:对于重命名后撤消到Windows中工作,你需要在你的路径中使用diff工具)
将导入添加到当前文件(使用gopkgs)
在struct字段上添加/删除标签(使用gomodifytags)
为接口生成方法存根(使用impl)
使用默认值填充结构文字(使用fillstruct)
诊断
Build-on-save编译代码并显示构建错误。 (使用go build和go test)
Vet-on-save运行go vet并将错误显示为警告
Lint-on-save将linting错误显示为警告(使用golint,gometalinter,megacheck,golangci-lint或revive)
键入时使用语义/语法错误报告(使用gotype-live)
测试
使用命令或代码段在光标,当前文件,当前包中,在整个工作区中运行测试
使用命令或代码段在游标下运行基准
根据需要或在包中运行测试后显示代码覆盖率。
生成单元测试骨架(使用gotests)
调试
调试代码,二进制文件或测试(使用delve)
有关更多读取使用VS代码调试Go代码。
有关更多读取使用VS代码调试Go代码。
远程调试
要使用VS Code进行远程调试,请阅读远程调试。
其他
安装/更新所有相关的Go工具
上传到Go Playground(使用goplay)
linter
linter是一种提供编码风格反馈和建议的工具。默认情况下,此扩展程序使用官方golint作为linter。
命令
除了集成的编辑功能外,该扩展还在Command Palette中提供了几个用于处理Go文件的命令:
Go:添加Import以从Go上下文中的包列表中添加导入
Go:当前GOPATH以查看您当前配置的GOPATH
Go:在光标处测试以在活动文档中的当前光标位置处运行测试
Go:Test Package在包含活动文档的包中运行所有测试
Go:测试文件以在当前活动文档中运行所有测试
Go:Test Previous运行以前运行的测试命令
Go:在Workspace中测试所有包以在当前工作空间中运行所有测试
Go:为包生成单元测试生成当前包的单元测试
Go:为文件生成单元测试生成当前文件的单元测试
Go:为函数生成单元测试生成当前文件中所选函数的单元测试
Go:安装工具安装/更新扩展所依赖的所有Go工具
Go:添加标签将已配置的标签添加到选定的结构字段。
Go:删除标签从选定的结构域中删除已配置的标签。
Go:生成接口存根为给定接口生成方法存根
Go:Fill Struct使用默认值填充struct literal
Go:在Go Playground上运行将当前选择或文件上传到Go Playground
您可以从命令托盘访问所有上述命令(Cmd + Shift + P或Ctrl + Shift + P)。
其中很少一部分在编辑器上下文菜单中也可用作实验性功能。要控制在编辑器上下文菜单中显示哪些命令,请更新go.editorContextMenuCommands设置。