go go go go not not sub package archives

时间:2014-09-02 11:37:27

标签: go

我在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”。

我的包需要相同的功能。我需要做哪些改变 打包使这成为可能。

编辑1

我的包位于GOPATH / src /目录中。我的所有子包(src和db)都存在。

2 个答案:

答案 0 :(得分:2)

  

Package build

     

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作为目录名称。根据例子。请勿使用srcpkgbin作为包名称。

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。

create_archieve.go

包nosql_orm

import _“go-orm / src / db”