将GOPATH
变量global设置为环境变量可以正常使用Visual Studio Code。
但是,在全球范围内设置项目特定变量对我来说似乎并不是很好。考虑您有多个Go
项目,每次编译,调试......等项目时都必须更改此变量。
是否有可能将GOPATH
变量设置为Visual Studio Code中的项目变量?以太settings.json
或launch.json
?
答案 0 :(得分:12)
(2018年第二季度:
请注意,对于vgo project,最终可能会弃用GOPATH
以支持基于项目的工作流。这样可以避免两年前我在下面提出的基于项目的GOPATH
手册。
使用Go 1.11(2018年8月),GOPATH
can be optional, with modules。
VSCode支持越来越多:
除了供应商文件夹,每个项目仍然可以有一个GOPATH
。
请参阅" GOPATH
from go.inferGopath
setting":
来自GOPATH
设置的
go.inferGopath
设置
go.inferGopath
会覆盖以上所有内容 如果go.inferGopath
设置为true
,则扩展程序将尝试从工作空间的路径推断出GOPATH
,即在vscode中打开的目录。它会在src
目录的路径中向上搜索,并将GOPATH
设置为高于该值的一个级别。例如,如果您的项目看起来像
/aaa/bbb/ccc/src/...
,那么打开目录/aaa/bbb/ccc/src
(或其下面的任何内容)将导致扩展程序向上搜索,找到src
组件中的GOPATH
组件。路径,并将GOPATH=/aaa/bbb/ccc
设置为高于GOPATH
的一个级别。当您处理具有不同
GOPATH
s的不同Go项目时,此设置很有用。您可以将;/:
设置为go.inferGopath
,而不是在每个项目的工作空间设置中设置true
或将所有路径设置为GOPATH
分隔的字符串,而扩展程序使用自动右GOPATH
。安装Go工具
go.toolsGopath
使用GOPATH
默认情况下,所有依赖的Go工具都来自上述逻辑派生的
PATH
如果PATH
上有GOPATH
,则GOPATH
用于查找Go工具 如果Go工具不在您的路径中,您最终可能会在每个go.toolsGopath
中安装相同的Go工具。
要防止Go工具混乱Go: Install Tools
,请使用RAMAnimatedTabBarController
设置为Go工具提供单独的位置。第一次设置go.toolsGopath时,您必须运行
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { if UserDataSingleton.sharedDataContainer.logged == "logged" { let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewController(withIdentifier: "Order") as! RAMAnimatedTabBarController // error here self.window = UIWindow(frame: UIScreen.main.bounds) self.window?.rootViewController = initialViewControlleripad self.window?.makeKeyAndVisible() }else{ let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewController(withIdentifier: "loginViewController") as! loginViewController self.window = UIWindow(frame: UIScreen.main.bounds) self.window?.rootViewController = initialViewControlleripad self.window?.makeKeyAndVisible() }
命令,以便Go工具安装在提供的位置。
答案 1 :(得分:4)
GOPATH是你的工作区,它分为
GOPATH/
|- bin/
|- pkg/
|- src/ <--- your projects are saved here
|- .../my_project1
|- .../my_project2
通过这种分离,您不需要为每个项目设置新的GOPATH。我建议你阅读How to Write Go Code
答案 2 :(得分:2)
Go 1.5添加了允许每个项目依赖项管理的供应商目录。
如果有源目录d / vendor,则在根据d生成的子树中编译源文件时,导入&#34; p&#34;被解释为import&#34; d / vendor / p&#34;如果该路径命名一个目录,该目录包含至少一个名称以“.go”结尾的文件。
默认情况下,此功能已启用Go 1.6:
Go 1.5引入了对由环境变量启用的“供应商”目录的实验性支持。在Go 1.6中,默认情况下现在启用该功能。
即使使用1.6版本,根据您使用的工具,您可能需要将GO15VENDOREXPERIMENT
环境变量设置为1
(基于unix的操作系统上的export GO15VENDOREXPERIMENT=1
)
答案 3 :(得分:1)
设置workspace settings
,
ctrl+,
设置工作区设置:
{
"go.gopath": "d:\\gopath;E:\\src"
}
将;
用于多路径
答案 4 :(得分:0)
如果您的VSCode项目目录是有组织的,
然后VSCode从您的工作区根目录推断出GOPATH,这立即解决了我的问题。我相信这在其他答案中得到了解释。我发布这个只是为了给出一个简短的版本。