使用gb

时间:2017-02-20 20:01:15

标签: go

我正在开始一个新项目并将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。

有什么想法吗?

2 个答案:

答案 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是否支持等效机制,但如果不支持,这是一个重新考虑的好理由。