为每个vscode项目设置`GOPATH`

Mat*_*ias 9 go visual-studio-code

GOPATH变量global 设置为环境变量可以正常使用Visual Studio Code.

但是在全球范围内设置项目特定变量对我来说似乎并不是很好.考虑到你有多个Go项目,每次你需要更改这个变量,编译,调试......等项目.

是否有可能GOPATH在Visual Studio Code 中将变量设置为项目变量?醚settings.json还是launch.json

Von*_*onC 12

(2018年第二季度:请注意,对于vgo项目,GOPATH最终可能会弃用以支持基于项目的工作流程.这将避免GOPATH我在两年前提出的基于项目的手动建议)

使用Go 1.11(2018年8月),GOPATH可以选配模块.

VSCode越来越支持它:


除了vendor文件夹之外,GOPATH每个项目仍然可以有一个.

请参见" GOPATH来自go.inferGopath设置 ":

GOPATHgo.inferGopath设置

设置go.inferGopath会覆盖以上所有内容.
如果go.inferGopath设置为true,则扩展将尝试推断GOPATH工作空间的路径,即在vscode中打开的目录.它在src目录的路径中向上搜索,并设置GOPATH为高于该目录的一个级别.

例如,如果您的项目看起来像/aaa/bbb/ccc/src/...,那么打开目录/aaa/bbb/ccc/src(或其下面的任何内容)将导致扩展程序向上搜索,src在路径中找到组件,并将其设置为GOPATH高于该级别的一个级别,即GOPATH=/aaa/bbb/ccc.

当您处理具有不同GOPATHs的不同Go项目时,此设置很有用.您可以设置为并且扩展名自动使用右侧,而不是GOPATH在每个项目的工作区设置中设置或将所有路径设置为;/:分隔的字符串. go.inferGopathtrueGOPATH

GOPATH 用于安装Go工具 go.toolsGopath

默认情况下,所有依赖的Go工具都是GOPATH从上面的逻辑派生出来的.
如果它们可用PATH,PATH则用于定位Go工具.
如果Go工具不在您的路径中,您最终可能会在每个工具中安装相同的Go工具GOPATH.
要防止Go工具混乱GOPATH,请使用该go.toolsGopath设置为Go工具提供单独的位置.

第一次设置go.toolsGopath时,您必须运行Go: Install Tools命令,以便Go工具安装在提供的位置.


小智 7

设置workspace settings,在窗口中:

  1. 前往设置:ctrl+,
  2. 设置工作区设置:

    { 
         "go.gopath": "d:\\gopath;E:\\src"
    }
    
    Run Code Online (Sandbox Code Playgroud)

用于;多路径

  1. 重启Visual Studio Code即可生效。


小智 5

GOPATH是您的工作区,分为

GOPATH/
    |- bin/
    |- pkg/
    |- src/ <--- your projects are saved here
        |- .../my_project1
        |- .../my_project2
Run Code Online (Sandbox Code Playgroud)

通过这种分离,您无需为每个项目设置新的GOPATH。我建议您阅读如何编写Go代码

  • 当您具有使用不同语言的不同项目的解决方案时,这还不够。 (3认同)
  • 考虑到您正在编写的每个微服务的应用程序中,每个微服务都以“ Go”编写,其他都以“ C ++”,“ JavaScript”编写,无论如何。然后您的工作区树看起来很奇怪... (3认同)

n00*_*dl3 2

Go 1.5 添加了供应商目录,允许按项目进行依赖关系管理。

\n\n
\n

如果存在源目录 d/vendor,则在以 d 为根的子树中编译源文件时,如果该路径命名的目录至少包含一个文件,则 import "p" 将被解释为 import "d/vendor/p"名称以 \xe2\x80\x9c.go\xe2\x80\x9d 结尾。

\n
\n\n

来源

\n\n

Go 1.6 默认启用此功能:

\n\n
\n

Go 1.5 引入了对由环境变量启用的 \xe2\x80\x9cvendor\xe2\x80\x9d 目录的实验性支持。在 Go 1.6 中,该功能现在默认启用。

\n
\n\n

来源

\n\n

即使使用 1.6 版本,根据您使用的工具,您可能需要将GO15VENDOREXPERIMENT环境变量设置为1export GO15VENDOREXPERIMENT=1在基于 unix 的操作系统上)

\n