08-插件中设置GOPATH

在任何使用都可以使用Go: Current GOPATH命令来查看扩展程序使用的GOPATH

从环境变量获得GOPATH

开箱即用,扩展程序使用环境变量GOPATH中设置的值。从Go1.8版本开始,如果没有设置这个环境变量,那么会使用go env中描述的GOPATH值。

通过go.gopath设置GOPATH

用户设置中设置go.gopath会覆盖从上面的逻辑中派生的GOPATH

工作空间中设置go.gopath会覆盖用户设置中的go.gopath。可以在此文件中将多个文件夹目录设置为GOPATH

注意,多个目录之间使用:分隔(在window系统中使用;分隔)

通过go.inferGopath设置GOPATH

设置go.interGopath会覆盖在go.gopath中设置的值。

如果go.inferGopath设置为true,那么扩展程序将会尝试从工作空间(例如,VSCode中打开的目录)的路径中推断GOPATH。扩展程序会从src目录的路径开始向上搜索,并将GOPATH设置为高于该目录的一个级别,其中也包括全局的GOPATH

运行命令go env GOPATH来查找全局的GOPATH

例如,如果项目是这样的/aaa/bbb/ccc/src/...,那么打开目录/aaa/bbb/ccc/src或者其中的任何子内容,都将会导致扩展程序自动向上搜索,在路径中找到src目录,然后将GOPATH设置为高于它一个级别的值,即GOPATH=/aaa/bbb/ccc

当处理具有不同GOPATH的Go项目时,这个设置非常有用。

不需要在每个工作空间中设置GOPATH,也不需要在工作空间中设置全部的目录然后用:;来分隔。

只需要将go.inferGopath设置为true,扩展程序就会自动搜索并使用正确的GOPATH

通过go.toolsGopath设置Go工具的GOPATH

使用go get命令在GOPATH中安装Go工具,要防止Go工具扰乱GOPATH,可以使用go.toolsGopath设置来提供单独的GOPATH仅用于Go工具。

第一次设置go.toolsGopath时,需要运行GO: Install/Update Tools命令,这样Go工具就能够安装在指定的位置。

如果没有设置go.toolsGopath或者在它指定的位置没有找到Go工具,那么会使用上面几节中描述的逻辑来找GOPATH中的Go工具。如果在那里也没有找到Go工具,那么就会在路径找中查找,这些路径时PATH环境变量的一部分。

上次修改: 14 April 2020