Go Module模块名理解

go可以使用go mod init命令新建一个模块,该命令的参数就是模块名,又称模块路径,例如:example.com/mymodule
有小伙伴可能有这样的疑问:这个模块路径需要我们和文件系统里的路径进行对应吗?其实不用。模块路径实际上就是一个标识符,用于在一个项目中唯一的标识、跟踪一个模块。与包Package联系起来,可以将之理解为包的命名空间。即当我们需要在当前文件中导入一个包时,必须连带着指定该包所属模块。下面来举一个例子:我们创建一个项目,其结构如下:

.
├── go.mod
├── main.go
└── route
    └── route.go

假设该项目的模块路径是example/web-server。main.go的包名是main自不必说。route.go的包名是route。当我们需要在main.go中导入route包时,需要按如下形式进行操作,该包的完整路径中包含了其所属的模块路径:

import "example/web-server/route"

可能还会这样的疑问:为什么我在使用第三方模块的时候,经常看到模块路径是这样的形式github.com/xxa/xxb,看起来像是Github的仓库地址。这个问题解释起来也很清楚,Golang官方对于模块路径的命名给出了几点建议:

  1. 模块路径尽量采用<prefix>/<descriptive-text>的形式。其中前缀用于指定模块来源,例如可以是该模块的存储库路径,就像之前说到的github.com/xxa/xxb这种前缀。或者采用一个你能“掌控”的名字,例如公司名、你的域名等,以确保尽可能不会被别人同时采用。至于后面的描述性文本,推荐采用该项目的名称来表示。
  2. 此外,尽量不要在前缀中使用testexampletest作为前缀的包惯例上会被用于测试另一个包,至于example则被大量用于一些文档。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值