我在golang中创建了一个名为go-orm的包,其结构如下。
go-orm
--| mine.go
--| src
-----| src.go
-----| db
--------| DBConnection.go
当我在go-orm目录中运行命令“go install”时,它只创建了 go-orm.a但不是src.a和db.a(子目录或包)。当我检查 “go install”使用它创建的mgo包。文件为它的子目录“bson”。
我的包需要相同的功能。我需要做哪些改变 打包使这成为可能。
我的包位于GOPATH / src /目录中。我的所有子包(src和db)都存在。
答案 0 :(得分:2)
Go Path
Go路径是包含Go源代码的目录树列表。它 咨询解决标准中无法找到的进口 去树。默认路径是GOPATH环境的值 变量,解释为适合操作的路径列表 系统(在Unix上,变量是以冒号分隔的字符串;在Windows上, 以分号分隔的字符串;在计划9,列表)。
Go路径中列出的每个目录都必须具有指定的结构:
src /目录包含源代码。 'src'下面的路径决定了 导入路径或可执行文件名。
pkg /目录包含已安装的包对象。和Go树一样 每个目标操作系统和体系结构都有自己的 pkg的子目录(pkg / GOOS_GOARCH)。
如果DIR是Go路径中列出的目录,则包含源的包 DIR / src / foo / bar可以导入为“foo / bar”并具有编译形式 安装到“DIR / pkg / GOOS_GOARCH / foo / bar.a”(或者,对于gccgo, “DIR / PKG / gccgo /富/搜索libbar.a”)。
bin /目录包含已编译的命令。每个命令都以。命名 它的源目录,但只使用最终元素,而不是整个元素 路径。也就是说,DIR / src / foo / quux中带有source的命令是 安装到DIR / bin / quux,而不是DIR / bin / foo / quux。 foo /是 剥离,以便您可以将DIR / bin添加到PATH以获取 已安装的命令。
这是一个示例目录布局:
GOPATH = /家庭/用户/ gocode
/home/user/gocode/ src/ foo/ bar/ (go code in package bar) x.go quux/ (go code in package main) y.go bin/ quux (installed command) pkg/ linux_amd64/ foo/ bar.a (installed package object)
使用指定的目录结构,包括使用src
作为目录名称。根据例子。请勿使用src
,pkg
或bin
作为包名称。
go-orm
--| mine.go
--| src <== !? Don't use src as a package name.
-----| src.go
-----| db
--------| DBConnection.go
答案 1 :(得分:-1)
After long analysis I found that "import" statement in root directory go file
可以做到这一点。我在root中创建了一个名为create_archieve.go的额外文件 目录(去-ORM)。在里面,我刚刚插入了以下创建的行 go-orm.a,src.a和db.a。
包nosql_orm
import _“go-orm / src / db”