我正在开始一个新项目并将gb
视为我的构建工具,但它似乎与vscode
无法很好地集成......
我使用gb vendor fetch
引用了第三方依赖项没有问题,但是对于创建本地包,这显示有点棘手!我错过了一些明显的东西吗?
这是我当地的src目录:
src
/cmd
/model
calc.go
/server
server.go
以下代码成功编译并创建bin\server.exe
文件但未获取导入路径,gocode
也无法识别
这是服务器代码:
package main
import (
"cmd/model" // not a happy reference...
"fmt"
)
func main() {
fmt.Println(model.Add(1, 2))
}
以下是型号代码:
package model
func Add(a int, b int) int {
return a + b
}
我在Github(https://github.com/joefitzgerald/go-plus/issues/325)上发现了类似的问题,而nsf的解决方案排除了自动完成(导入后),导入语句本身仍然声称在GOROOT和GOPATHs。
有什么想法吗?
答案 0 :(得分:1)
感谢lukehoban在这里的回答https://github.com/Microsoft/vscode-go/issues/249我能够让我的环境有效。
我只是在我配置的.vscode目录下创建了一个settings.json文件(现在必须签入):
{
"go.gopath": "${workspaceRoot}"
}
这让我觉得不干净,仍然没有提供一种方法来同时引用第三方依赖项和本地包...
答案 1 :(得分:0)
不要试图对抗Go,与Go一起工作。
首先为所有包提供完全限定的导入路径。 Go是围绕全局导入路径设计的,不要试图强制Go使用平面层次结构甚至是相对路径。
您可以直接指向导入路径存储库端点,也可以使用Go的remote import path机制。顺便说一句,如果你碰巧运行一个自托管的GitLab实例,它支持开箱即用的远程导入路径元标记。
我更喜欢glide,但也许gb也可以使用以下内容。对于即将到来的go dep,当然可以使用类似的东西:你可以使用滑翔的repo stanza指向ssh + git端点和其他端点。坦率地说,我不知道gb是否支持等效机制,但如果不支持,这是一个重新考虑的好理由。