我的GOPATH是/Users/joe/go.我正在开发一个名为的项目myproj,这是一个名为的包myproj.
如果我想能够写,import "myproj"那么我需要的目录结构是:
$GOPATH/src/myproj/myproj.go
$GOPATH/src/myproj/myproj_test.go
...
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法使用Git.如果我查看Google的示例包,我会看到以下格式:
go.example/hello/hello.go
go.example/LICENSE
Run Code Online (Sandbox Code Playgroud)
go.example回购的名称在哪里.
因此,实际的包目录可以在存储库中找到.如果我把这个存储库的内容放在我的$ GOPATH的目录中,例如
$GOPATH/src/go.example/hello/hello.go
$GOPATH/src/go.example/LICENSE
Run Code Online (Sandbox Code Playgroud)
然后我将不得不键入import "go.example/hello"而不是import "hello".
回到我的项目,我需要在Git存储库中打包它,然后我需要一个容器目录.所以我目前的文件结构是:
$GOPATH/src/myproj # The dir for the git repo
$GOPATH/src/myproj/.git
$GOPATH/src/myproj/LICENSE # Files in the base of the repo
$GOPATH/src/myproj/myproj/myproj.go # Package files in package dir
$GOPATH/src/myproj/myproj/myproj_test.go
Run Code Online (Sandbox Code Playgroud)
我需要外部myproj目录来绑定git存储库,我需要内部目录作为包目录.结果是我需要输入import "myproj/myproj"而不是import "myproj".
我该如何解决?我是否必须为我正在开发的每个项目添加多个$ GOPATHS?
提前致谢.
首先:
我是否必须为
$GOPATH我正在开发的每个项目添加多个s,一个?
不,你根本不需要多个$GOPATH.
它们是管理您(可能是几个)项目的工具.当您设置一个新的项目环境时,您已经知道它将具有某些依赖项 - 可能对该项目是唯一的,或者应该与其他人设置类似,您可以创建一个新的项目文件夹并将其设置为GOPATH.这样,您还可以为该项目使用(=签出)特定版本的库,而将其他版本用于其他项目文件夹(= GOPATHs)中的其他项目.
至于你的路径问题:Go遵循author/project(或organization/project)的通用范例.当几个人,作者和组织启动具有相同名称的项目时,这将防止命名冲突.(然后作者可以在"他的"文件夹中使用子文件夹,子项目以及.)
如果您知道这一点并且仍然只想myproj用作包路径,那么在该文件夹中创建git存储库没有问题 - 与您链接到的示例包相反.
回到我的项目,我需要在Git存储库中打包它,然后我需要一个容器目录.
是什么让你这么想?Go不需要它.Git没有.
所以以下内容将起作用:
/src/myproj/.git
/src/myproj/myproj.go
Run Code Online (Sandbox Code Playgroud)
虽然这不是鼓励的做法,但您可以将存储库放入您的myproj文件夹中.
我测试了这个如下:
FOLDER
FOLDER/src
FOLDER/src/myproj
FOLDER/src/myproj/myproj.go
FOLDER/src/mainproj
FOLDER/src/mainproj/main.go
Run Code Online (Sandbox Code Playgroud)
同 folder/src/myproj/myproj.go
package myproj
type My struct {
I int
}
Run Code Online (Sandbox Code Playgroud)
和 folder/src/mainproj/main.go
package main
import (
"fmt"
"myproj"
)
func main() {
my := myproj.My{7}
fmt.Printf("Works! %v", my.I)
}
Run Code Online (Sandbox Code Playgroud)
运行
cd FOLDER
set GOPATH=FOLDER
go run src/mainproj/main.go
Run Code Online (Sandbox Code Playgroud)
将输出:
Works! 7
Run Code Online (Sandbox Code Playgroud)
现在,如果你git init在文件夹中FOLDER/src/myproj,那么Go就完全无关紧要了.
| 归档时间: |
|
| 查看次数: |
2896 次 |
| 最近记录: |