图省事装了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
        }
    }

就不会动你没改过的代码啦