src: 源码文件
bin: 编译生成的而可执行文件
pkg: 平台相关目录(目标操作系统目录),编译后生成的文件

pkg:保存归档文件(扩展名为 .a 的文件,即 archive 文件)这是程序编译后生成的静态库文件。
注意:在 pkg 下实际上还有一个平台相关目录(目标操作系统对应的目录),所有的归档文件都在这个目录下

当前出现了三个子目录

[root@localhost pkg]# ls
linux_amd64  mod  sumdb

第一个目录 linux_amd64

因为该go环境是在Linux系统上运行的

//这个一个与平台相关的目录,即操作系统对应的目录
[root@localhost ligato]# pwd
/root/go/pkg/linux_amd64/github.com/ligato
[root@localhost ligato]# ls
vpp-agent.a

第二个目录 mod

[root@localhost mod]# ls
9fans.net  cloud.google.com  github.com  golang.org    google.golang.org  go.starlark.net@v0.0.0-20200821142938-949cc6f4b097  go.uber.org  mvdan.cc
cache      git.fd.io         go.etcd.io  go.ligato.io  gopkg.in           gotest.tools@v2.2.0+incompatible                    honnef.co    sigs.k8s.io

开启GO11MODULE=on 后,go get 安装的包将到 go/pkg下

go get -m [packages]会将下载的依赖包放到GOPATH/pkg/mod目录下,
并且将依赖写入到go.mod文件.

go get -u=patch会更新主模块下的所有依赖包。

Go 1.11版本支持临时环境变量GO111MODULE,通过该环境变量来控制依赖包的管理方式。

  • 当GO111MODULE的值为on时
    那么就会使用modules功能.
    这种模式下,GOPATH不再作为build时导入的角色,依赖包会存放在GOPATH不再作为build时导入的角色,依赖包会存放在GOPATH不再作为build时导入的角色,依赖包会存放在GOPATH/pkg/mod目录下。
    工程中的依赖包也会从此目录下查找。

  • GO111MODULE=off时
    go命令行将不会使用新的module功能,它将会在vendor目录下和GOPATH目录中查找依赖包。
    这种模式叫GOPATH模式。

使用顺序为:

  1. 优先使用vendor目录下面的包,
  2. 如果vendor下面没有搜索到,再搜索$GOPATH/src下面的包,
  3. 如果 $GOPATH下面没有搜索到,那么搜索$GOROOT/src下面的包,
  4. 要么完整使用vendor下面的包,要么完整使用$GOPATH下面的包,不会混合使用。
  • GO111MODULE=auto时
    包引入的路径可以混合使用.

第三个目录 sumdb

[root@localhost sumdb]# ls
sum.golang.org

GOSUMDB

它的值是一个 Go checksum database,用于在拉取模块版本时(无论是从源站拉取还是通过 Go module proxy 拉取)

保证拉取到的模块版本数据未经过篡改,若发现不一致,也就是可能存在篡改,将会立即中止。

GOSUMDB的默认值为:sum.golang.org,在国内也是无法访问的,但是 GOSUMDB 可以被 Go 模块代理所代理(详见:Proxying a Checksum Database)。

因此我们可以通过设置 GOPROXY 来解决,而先前我们所设置的模块代理 goproxy.cn 就能支持代理 sum.golang.org,所以这一个问题在设置 GOPROXY 后,你可以不需要过度关心。

go的目录结构pkg相关推荐

  1. Go 学习笔记(84)— Go 项目目录结构

    1. 目录规范 一个好的目录结构至少要满足以下几个要求. 命名清晰:目录命名要清晰.简洁,不要太长,也不要太短,目录名要能清晰地表达出该目录实现的功能,并且目录名最好用单数.一方面是因为单数足以说明这 ...

  2. golang 项目的目录结构

    项目目录结构如何组织,一般语言都是没有规定.但Go语言这方面做了规定,这样可以保持一致性 1.一般的,一个Go项目在GOPATH下,会有如下三个目录: |--bin |--pkg |--src 其中, ...

  3. Go项目的目录结构基本布局

    前言 随着项目的代码量在不断地增长,不同的开发人员按自己意愿随意布局和创建目录结构,项目维护性就很差,代码也非常凌乱.良好的目录与文件结构十分重要,尤其是团队合作的时候,良好的目录与文件结构可以减少很 ...

  4. Go项目工程管理及目录结构

    在Go的官网文档How to Write Go Code中,已经介绍了Go的项目目录一般包含以下几个: src 包含项目的源代码文件: pkg 包含编译后生成的包/库文件: bin 包含编译后生成的可 ...

  5. MacOS磁盘目录结构

    打开Macintosh HD你会发现内中有四个文件夹(一般情况下,隐藏文件夹是不可见的,而且,可能会更多,比如安装xcode后会有developer文件夹). 分别有--应用程序(Applicatio ...

  6. MAC硬盘目录结构详解及相关操作

    打开Macintosh HD你会发现内中有四个文件夹(一般情况下,隐藏文件夹是不可见的,而且,可能会更多,比如安装xcode后会有developer文件夹). 分别有--应用程序(Applicatio ...

  7. mac go linux 目标,Mac下Golang安装以及目录结构-Go语言中文社区

    1.安装步骤 a.下载地址  下载SDK后,解压到自己喜欢的目录(后面配置PATH需要用到) b.配置PATH,有很多个地方可以配置具体可参考此链(PATH配置详解),我是直接修改的~/.bash_p ...

  8. Udacity机器人软件工程师课程笔记(九)-ROS-Catkin包、工作空间和目录结构

    Catkin包和工作空间 1.Carkin包简介 Catkin是ROS的官方构建系统,也是原始ROS构建系统rosbuild的继承者.catkin结合了CMake宏和Python脚本,在CMake的正 ...

  9. Platform Builder 5下WinCE 5.0目录结构

    Platform Builder 5下WinCE 5.0目录结构 Platform Builder 5已经自带WinCE 5.0,安装过程会指定WinCE 5.0的安装路径,默认为X:\WINCE50 ...

  10. Tomcat软件的目录结构、作用

    要了解Tomcat的目录结构,首先要知道什么是Tomcat? Tomcat是一个Apache软件基金会Jakarta项目中的核心项目:是一个免费的开放源代码的轻量级Web应用服务器:运行时占用资源小, ...

最新文章

  1. 华为为什么能成全球第一?告诉你三个真相!
  2. python模块的导入的两种方式区别详解
  3. 使用SDL打造游戏世界之入门篇 - 5
  4. Python webdriver调用Chrome报错
  5. 25 人以下,免费!
  6. Discuz! 7.1 7.2 远程代码执行漏洞
  7. 跟KingDZ学HTML5之八 HTML5之Web Save
  8. MongoDB 的设计模式策略
  9. Java编程:排序算法——归并排序
  10. 基于wireshark和NetAssist的单机模拟抓TCP包:三次握手、四次挥手、长连接
  11. 京东登录界面html css,css制作京东登录页面 css样式,京东店面装修怎么写CSS样式?...
  12. 聊聊广告系统里的匀速投放
  13. 求职时,怎样判断一家公司是否靠谱?
  14. ego-planner论文阅读笔记
  15. 数据分析师应该怎么优化自己的简历?
  16. Spring系列:2021年Java春招面试经历,内容太过真实
  17. 玩转WORD字体设置:WORD字间距怎么调整,WORD字体怎么调大等
  18. 回忆--上海滩奋斗的日子
  19. ML-Agents案例之蠕虫
  20. 微信小程序选择地址填写详细地址定位地点

热门文章

  1. WebIM 网页聊天工具
  2. Unity Android Ios 微信SDK 接入
  3. 微信小程序里面嵌套的h5使用微信sdk配置踩坑
  4. 裸辞后破釜沉舟三个月,拿到SSP!
  5. 程序员如何成为别人的男朋友
  6. vs禁用函数安全检查
  7. vscode英文界面转换为中文界面
  8. 网页加载过程+性能优化+安全
  9. easyphp 登陆mysql_EasyPHP 16.1.1无法启动MySQL
  10. Jmeter配置元件之HTTP授权管理器与 HTTP缓存管理器-19