图省事装了vscode做go开发,结果发现并不省事,遇到好的问题都不太能搜的到。
记录一下,随时更新
======================
我的开发机是win10,二进制代码跑在lvesu.com的服务器上,服务器是linux,这是前提
服务器上创建目录权限有点问题,百度一下应该要用syscall.Umask
结果在vscode里报
Umask not declared by package syscall
想一想,umask是linux的命令,windows环境包里没有好像也符合逻辑
怎么办,得让vscode配置成linux环境,搜了半天没找到解决办法
我们知道,go交叉编译的时候靠的是环境变量GOOS
所以得在vscode项目启动的时候,告诉包管理工具变量GOOS是linux
找了半天找到这个配置go.toolsEnvVars
在settings.json里配置一下:
"go.toolsEnvVars": { "GOARCH":"amd64", "GOOS":"linux" }
重启一下项目,vscode拉的包就是linux环境的包了。
另外,vscode的命令行,还是没有办法交叉编译,在命令行里set环境变量也不生效
设置settings.json里这个变量:
"terminal.integrated.env.windows": { "GOARCH":"amd64", "GOOS":"linux" }
build一下:
D:\leiting\lvesu> go build -o linux-bin main.go
OK,编译出来的二进制文件linux-bin就可以直接丢到linux服务器里跑啦
再一个,vscode总自动格式化代码,改别人的文件满篇全是改动,不想让vscode自动格式化代码的话
设置settings.json:
"[go]": { "editor.insertSpaces": false, "editor.formatOnSave": false, "editor.codeActionsOnSave": { "source.organizeImports": false } }
就不会动你没改过的代码啦