Go简介
Go(又称Golang,wiki 中文)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的开源编程语言(github),支持windows、linux、macOS等操作系统。
安装SDK
在运行和调试go脚本之前,需要安装SDK包(当前最新的go版本为1.13.5 windows版本:go1.13.5.windows-amd64)。
安装程序会将go脚本解释器等相关文件复制到目标目录中,最后会将SDK包的bin目录添加到系统环境变量%Path%中,并新增用户级环境变量%GOPATH%=%USERPROFILE%\go,并将其该路径添加到用户级环境变量%path%中
注:%GOPATH%是用来存放go语言相关的第三方工具或插件
安装Delve调试器
go get -v github.com/go-delve/delve/cmd/dlv
注1:以上命令会调用git.exe从github上克隆Delve的源码,并放置在%GOPATH%\src\github.com\go-delve\delve目录中
注2:下载dlv.exe调试器并放置在%GOPATH%\bin目录中
此时就可以用dlv对go脚本命令行调试了 命令如:dlv debug d:\main.go
b main.go:4 // 在main.go的第4行放置一个断点
bp // 查看断点信息
bt // 打印堆栈
n // 执行下一句代码(相当于vs中的F10)
c // 继续执行(相当于vs中的F5)
exit // 退出调试
locals // 打印当前局部变量
p nVar1 // 打印nVar1变量的值
ls // 显示源码
使用跨平台vsCode来编辑和调试go脚本
除了安装上面的go语言SDK和Delve调试器外,还需要在vsCode中安装Microsoft的go插件:Rich Go language support for Visual Studio Code (注:其github在这里,可在vscode的Extensions面板中搜索go找到它然后直接安装)
还可安装其他插件来增强vsCode中go语言的功能 详见:Go tools that the Go extension depends on
名称 | 功能 | github链接 |
gocode | 代码自动补全 | https://github.com/mdempsky/gocode |
go-outline | 在当前文件中查找 | https://github.com/ramya-rao-a/go-outline |
go-symbols | 在项目路径下查找 | https://github.com/acroca/go-symbols |
gopkgs | 自动补全未导入包 | https://github.com/uudashr/gopkgs |
guru | 查询所有引用 | https://godoc.org/golang.org/x/tools/cmd/guru |
gorename | 重命名符号 | https://godoc.org/golang.org/x/tools/cmd/gorename |
goreturns | 格式化代码 | https://github.com/sqs/goreturns |
godef | 跳转到声明 | https://github.com/rogpeppe/godef |
godoc | 鼠标悬浮时文档提示 | https://godoc.org/golang.org/x/tools/cmd/godoc |
golint | 就是lint | https://godoc.org/golang.org/x/lint/golint |
gomodifytags | 修改结构体标签 | https://github.com/fatih/gomodifytags |
goplay | 运行当前go文件 | https://github.com/haya14busa/goplay |
impl | 新建接口 | https://github.com/josharian/impl |
gotype-live | 类型诊断 | https://github.com/tylerb/gotype-live |
gotests | 单元测试 | https://github.com/cweill/gotests |
go-langserver | 语言服务 | https://github.com/sourcegraph/go-langserver |
filstruct | 结构体成员默认值 | https://github.com/davidrjenni/reftools/tree/master/cmd/fillstruct |