今天当我完成一个小地方的改动时。我静静坐下来,想把windows环境弄好。也回顾下beego的开发。之前我用linux虚拟机的开发环境。不方便,起初我认为需求少,写不了太多,再加上,没有IDE,能让我更熟悉代码。想法是不对的,还是需要IDE提升开发效率,虽然你会开发,但是IDE还是会让你更加记得清楚。
windows
命令行环境用的CMD、GitBash
编辑器 vscode 1.30.1
go version 1.8.3
装个beego
设置环境变量
GOROOT go的安装目录
GOBIN go的bin目录(存放编译后可执行文件,比如:安装beego框架的bee工具,bee执行文件会放到这里)
GOPATH 工作空间
比如我把:GOPATH设置成了
export GOPATH=/f/iProject/gopath #用这种方式可以灵活设置GOPATH。
安装框架
go get github.com/astaxie/beego
安装bee工具
创建项目
blog项目
bee new blog
跑起来
bee run,看到如下一行
http server Running on http://:8080
修改端口号
额,由于我本地装了jekins ,它用的8080端口,我没有看到beego页面。另外8080也有可能是tomcat的端口。
那,最好别跟流行的端口重复,比如我们用1010。
ctrl+shift+f(也可以点放大镜) 搜 8080,能看到两个conf文件app.conf
和config.go
。能看出来我们改app.conf,这个文件是应用配置文件。config.go是框架配置文件。我们凭多年使用框架的嗅觉就能知道改app.conf了。
app.conf文件内容
appname = blog
httpport = 8080
runmode = dev
改成 1010即可。再次bee run
ok,我们访问到了
http://127.0.0.1:1010/
Ctrl+Space
有些人找不到settings.json。在你的右下角齿轮点击,选择设置。在设置界面不同版本可能界面不一样。我的版本,在右上角{}
,找到这一对括号,点击即可。
安装vscode go扩展
ctrl+shift+x 搜 go
想知道Go插件做了些什么事情请看《Go for Visual Studio Code》。
安装完,右下角会提示你安装一些工具。点击install all
Installing 9 tools at F:\iProject\gopath\bin
gocode
gopkgs
go-outline
go-symbols
guru
gorename
dlv
godef
goreturns
这些小工具是干啥的。
名称 | 作用 |
---|---|
github.com/nsf/gocode | golang 语言提示 |
github.com/uudashr/gopkgs/cmd/gopkgs | gopkg是提供可以导入的可用go包列表的工具 |
github.com/ramya-rao-a/go-outline | 用于提取go源文件中声明的JSON表示形式的简单实用程序。 |
github.com/acroca/go-symbols | 用于从go source树中提取包符号的JSON表示的实用程序。如果名为src的目录位于该目录下,则该目录将被遍历以获取源代码,否则将遍历整个树。 |
golang.org/x/tools/cmd/guru | 回答有关go源代码问题的工具 |
github.com/sqs/goreturns | 此工具为不完整的Go返回语句添加零值返回值,以节省编写Go时的时间 |
golang.org/x/tools/cmd/gorename | gorename命令对go源代码中的标识符执行精确的类型安全重命名。。 |
github.com/rogpeppe/godef godef | 在Go source中查找符号信息, 给定源文件中的表达式或位置 |
在 安装的过程中发现只有一两个成功了,其他的失败,而且报了很多错。
Installing github.com/nsf/gocode SUCCEEDED
Installing github.com/uudashr/gopkgs/cmd/gopkgs FAILED
Installing github.com/rogpeppe/godef FAILED
…………………… 省略之后的报错信息
为什么会下载失败呢?
失败信息中你能看到 golang.org/x 这样的字符串。其实,需要科学上网(用代理)。OK!我之前配置过。有两种方案。
1.在你的命令行下载。比如:git bash可以。https_proxy='127.0.0.1:1080' go get -u -v golang.org/x/tools/cmd/guru (https_proxy 为啥不是http_proxy呢?因为golang.org 是https)
2.我们把代理配置到vscode中,那这是最方便的,以后就OK了。
{
……
"http.proxy": "http://user:[email protected]:8080",
"https.proxy": "http://user:[email protected]:8080",
"http.proxyStrictSSL": false
……
}
那我的就是
"http.proxy":"127.0.0.1:1080",
"https.proxy":"127.0.0.1:1080",
配置好之后,我们点开小铃铛,哪里有vscode 通知,有之前提示你安装的信息,点击下 install all。
但还是发现有三个安装失败了
Installing github.com/derekparker/delve/cmd/dlv FAILED
Installing github.com/rogpeppe/godef FAILED
Installing github.com/sqs/goreturns FAILED
我在命令行再试一个
$ go get -u -v github.com/rogpeppe/godef
github.com/rogpeppe/godef (download)
github.com/rogpeppe/godef/vendor/golang.org/x/tools/go/internal/gcimporter
# github.com/rogpeppe/godef/vendor/golang.org/x/tools/go/internal/gcimporter
F:\iProject\task\src\github.com\rogpeppe\godef\vendor\golang.org\x\tools\go\internal\gcimporter\bexport.go:212: obj.IsAlias undefined (type *types.TypeName has no field or method IsAlias)
我在这个issue(https://github.com/golang/lint/issues/421)找到了原因,1.8版本不支持。
我在lint travis.yml看到 1.8跟1.9不在支持了。
不管了去官网下载了下载了go1.11.4。安装后,重新安装那些工具,ok,成功。这里注意一点重装之后GOPATH变了。但是当前的会话中都是可以用原来的。
对了,安装完毕的都会放在GOBIN中。即使你升级go版本,里面的第三方执行文件都会在(当然装的go.exe,gofmt.exe,godoc.exe是会重新安装一份)。
我们想要的功能。
ctrl+鼠标点击跳转到对应的代码。没问题有的。
ctrl+space 提示函数的参数,ok,没问题。 这里有个细节会跟语言切换的快捷键冲突哈。在vscode 敲着个快捷键不会切换语言,但是有函数参数的提示。
有些快捷键不好使可能是冲突的,还有一些插件的配置。可以看 《使用visual studio code开发Go程序 》
有个细节
安装的工具,源文件都会放到我的GOPATH下面的src中
安装工具的一些包都会被装到我的GOPATH下,但我只用beego的框架。go get 是安装包以及依赖。工具编译好了。那源文件删掉即可。
参考资料:
Go in Visual Studio Code https://code.visualstudio.com/docs/languages/go
beego 框架 https://beego.me/docs/install/bee.md
go get 使用代理 https://stackoverflow.com/questions/10383299/how-do-i-configure-go-to-use-a-proxy
使用visual studio code开发Go程序 https://colobu.com/2016/04/21/use-vscode-to-develop-go-programs/