Go 如何进行短/相对导入

Go 如何进行短/相对导入,go,import,Go,Import,是否可以在Go代码中进行相对导入?我读了很多例子,但我真的不明白怎么做。例如,我有一个项目app和一个子包utils app main.go utils utils.go utils.go: package utils import "fmt" func TestFunc() { fmt.Print("I'm a TestFunc") } 有没有一种方法可以只使用import“/utils”或import”ap

是否可以在Go代码中进行相对导入?我读了很多例子,但我真的不明白怎么做。例如,我有一个项目
app
和一个子包
utils

app
   main.go
   utils
        utils.go
utils.go:

package utils

import "fmt"

func TestFunc()  {
    fmt.Print("I'm a TestFunc")
}
有没有一种方法可以只使用
import“/utils”
import”app/utils
导入此包,而不使用像
import“github.com/hithubuser/app/utils”这样的所有路径


如果没有办法,您如何处理嵌套包?您是为所有导入编写完整路径还是避免创建完整路径?

通常导入路径在
$GOPATH/src
之后开始,请参阅

假设您有目录结构:

$GOPATH/src/github.com/hithubuser/app/utils

# your import path is 'github.com/hithubuser/app/utils'
您是为所有导入编写完整路径,还是避免创建完整路径

是的,通常使用完全导入,因为它使您能够以go库的形式分发代码。这样您就可以开发可重用代码,并根据需要将其导入任何项目中,或者将其发布到go社区


假设您有一个独立的项目,没有引用任何其他Go项目,并且您是以二进制文件而不是Go库的形式分发的。然后您可以使用类似的内容(虽然它不常用/不推荐)

只需在
$GOPATH/src
git clone github.com/hithubuser/app

$GOPATH/src/app/utils

# then import path is app/utils

通常导入路径在
$GOPATH/src
之后开始,请参阅

假设您有目录结构:

$GOPATH/src/github.com/hithubuser/app/utils

# your import path is 'github.com/hithubuser/app/utils'
您是为所有导入编写完整路径,还是避免创建完整路径

是的,通常使用完全导入,因为它使您能够以go库的形式分发代码。这样您就可以开发可重用代码,并根据需要将其导入任何项目中,或者将其发布到go社区


假设您有一个独立的项目,没有引用任何其他Go项目,并且您是以二进制文件而不是Go库的形式分发的。然后您可以使用类似的内容(虽然它不常用/不推荐)

只需在
$GOPATH/src
git clone github.com/hithubuser/app

$GOPATH/src/app/utils

# then import path is app/utils

另一种可能性是使用Go 1.5中介绍的供应商设施

  • 创建一个
    供应商
    目录
  • utils
    目录复制(或
    git clone
    或其他内容)为
    vendor
    的子目录,因此您的层次结构如下所示:

    app
    |--梅因,加油
    `--卖主/
    `--乌提尔斯/
    `--乌提斯·戈
    
  • 如果您使用的是Go 1.5,则启用供应商支持。较新版本默认情况下启用它


  • 另一种可能性是使用Go 1.5中介绍的供应商设施

  • 创建一个
    供应商
    目录
  • utils
    目录复制(或
    git clone
    或其他内容)为
    vendor
    的子目录,因此您的层次结构如下所示:

    app
    |--梅因,加油
    `--卖主/
    `--乌提尔斯/
    `--乌提斯·戈
    
  • 如果您使用的是Go 1.5,则启用供应商支持。较新版本默认情况下启用它