• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go的目录结构以及如何引用自己写的包

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、 目录结构

1)在gopath模式下

作为一个workspace,需要包含src、pkg、bin三个目录


workspace(/root/code/go)

|-- src //源码目录(自己写的工程,或是go get获取的工程)

        |-- 我的工程

                |--vendor //可选,该工程依赖的三方包

|-- pkg //编译生成的静态包文件(一般为.a文件)

|-- bin //go可执行工具目录(执行go install后会复制到此目录下)


设置环境变量:

export GOPATH=/root/code/go

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin


源码:必须放在src目录下

依赖包:放在src目录下(一般通过go get获取),或是放在”我的工程“目录下自己新建的vendor目录里。


2)在go mod模式下

源码可以放在任意地方,go mod依赖包会先下载到pkg目录,保存为cach文件再解压,以包名+版本号进行版本区分,如[email protected]

源码:任意位置

依赖包:告别vendor目录,通过go mod管理,会下载到pkg目录下。


go mod常用命令

  • go mod init # 初始化当前目录为模块根目录,生成go.mod, go.sum文件
  • go mod download # 下载依赖包
  • go mod tidy #整理检查依赖,如果缺失包会下载或者引用的不需要的包会删除
  • go mod vendor #复制依赖到vendor目录下面
  • go mod 可看完整所有的命令
  • go mod graph 以文本模式打印模块需求图
  • go mod verify 验证依赖是否正确
  • go mod edit 编辑go.mod文件

二、引用自定义包

引用自定义包实例:

这里go mod init mytest,故意将module名和目录配置不一样。

root# cat go.mod

module mytest

go 1.14

工程目录结构如下:

例1:import "mytest/mdAbc"

mytest为go mod 的module名

./mdAbc目录名和包同名

直接import "mytest/mdAbc"

例2:import "mytest/json_test/jsonmode"

mytest为go mod 的module名

./json_test包名和子目录同名,都是jsonmode,因此直接import "mytest/json_test/jsonmode"

当然也可以取别名的方式:xx "mytest/json_test/jsonmode"

例3:import hi "mytest/mdHi"

目录./mdHi和包(hi)不同名,只能以取别名的方式import

例4:import wo "mytest/mdWo"

目录./mdWo和包(wo)不同名,只能以取别名的方式import

例5:import ha "mytest/mdWo/mdHa"

目录./mdWo/mdHa和包(ha)不同名,只能以取别名的方式import


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go 灵活多变的切片Slice发布时间:2022-07-10
下一篇:
解决go get命令下载包出问题发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap