go[6]-包结构

标准目录为src、bin、pkg三个目录。
GOPATH可以指定几个目录,排在列表最前面的比当前工作空间优先级更高。go get默认会下载到第一个工作空间里面。备注:unix-like使用冒号分隔,windows使用;分割。
GOROOT指定工具链和标准库的存放位置。

导入包

如果是系统级的包的导入

import "net/http"
import osx "github.com/apple/osx/lib"
import _ "github.com/qyuhen/test"
import "../lib" // 相对路径引入

组织结构

包由一个或多个保存在同一目录下的源文件组成。
包名和目录名称并无关系,不要求保持一致,举个例子,leaf里面的go的库。目录名为go,但是里面的包使用的名称为g。不影响使用,在import的时候是写go,语句里面写g。

"github.com/name5566/leaf/go"
d := g.New(10)

同一目录下的包名需要完全一致。下列有几个特殊的包名:

main :可执行入口
all: 标准库以及 GOPATH中能找到的所有包。
std,cmd:标准库工具链
documentations:存储文档信息、无法导入。

权限

包内成员可以互相访问。只有大写字母的能被包外访问。当然也能通过unsafe.Pointer方式来反出数据并且调用。

初始化

func init() {
} 

内部包

将内部模块分离出来,单独包的形式维护。只能被父目录下的包访问,命名为internal目录下的包。

依赖管理

主要是解决三方依赖库文件冲突问题。这个概念是和内部包刚好相反,vendor目录是提供给当前工作目录,通用的目录。
注意:vendor比标准库有嫌隙更高。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容