首页 > 其他分享 >go pkg包名,如何在pkg.go.dev发布golang软件包, package包名, import包名, git库名, go.mod module模块名称 区别与使用总结

go pkg包名,如何在pkg.go.dev发布golang软件包, package包名, import包名, git库名, go.mod module模块名称 区别与使用总结

时间:2024-08-03 21:27:35浏览次数:15  
标签:包名 strutils git 名称 go pkg

golang的包名在不同的地方作用不同,用途不同。 在我们通过pkg.go.dev发布自己的包的时候,了解这些包名和他们的用途就很有必要了。 下面我们以go语言中的pkg库 github.com/tekintian/strutils为例说明各种名称的区别和用途。

如何在pkg.go.dev发布golang软件包

要在pkg.go.dev发布自己的软件包,首先需要创建一个git仓库,然后通过 https://pkg.go.dev/{go软件包仓库地址} 访问后根据提示即可将你的软件包提交到golang的pkg公共仓库。 

示例: 将git仓库https://github.com/tekintian/strutils发布到golang公共pkg仓库, 则pkg的发布地址为https://pkg.go.dev/github.com/tekintian/strutils访问后即可根据提示将git仓库的相关软件包发布到pkg仓库。

pkg包名

上面的 “github.com/tekintian/strutils” 就是我们要发布到 golang pkg仓库的pkg包名。 这个包名就是我们在go项目中安装的包名,即  go get github.com/tekintian/strutils

package包名

 这个包名就是我们在每个xxx.go文件里面的包名, 他一般为当前项目或者文件夹的名称, 同一个文件夹下面的包名必须一致(xxx_test测试包名除外)。  注意这个package名称只能由字母数字和下划线组成,不能有其他的字符,如 - 是不被允许的。

这个包名也是我们发布pkg包后第三方调用当前库中的包名, 如:

import "github.com/tekintian/strutils"    // 这里的strutils就是git仓库的名称

strutils.SnakeStr("UserName") // 调用pkg库里面的函数 这里的strutils 是项目中的package包名

strutils git仓库名称 和 strutils package包名 他们可以不一样。 git仓库名称只影响import导入时的包名,不会影响调用pkg包中的函数的名称,即不影响 strutils.xxx 名称 .

import包名

import包名 就是在第三方xxx.go文件里面调用的包名,这里的包名和pkg里面的包名一致。 

git库名 

这个名称就是你的git仓库的名称。 这个名称和pkg包名是一致的

go.mod module模块名称

这个名称就是项目的名称,这个名称非常重要,他是整个项目中的跟包名。

import导入包别名

所谓的别名, 即给导入的包起的名称, 通过它可直接调用包中的函数。 别名对应的是项目跟目录中的package包名, 别名在同一个项目中导入多个第三方项目,且第三方项目中的package包名相同时非常有用,他可以避免导入别名冲突问题。

pkg包名和package包名不一致是调用方法

        如果上面的git仓库,pkg名,module名称为 go-str-utils 【即 github.com/tekintian/go-str-utils 】, 而package包名strutils , 则在导入时的pkg包名就是 import  "github.com/tekintian/go-str-utils"  而调用包中的函数时使用的名称仍然是 strutils.Xxx() 。

总结: git库名影响pkg包名, package包名即导入pkg库后调用库中函数的名称,module模块名称是当前模块的跟模块名称。git库名和pkg包名不影响导入后调用包中的函数的名称。 import导入别名对应的是项目中的package名称。

标签:包名,strutils,git,名称,go,pkg
From: https://blog.csdn.net/tekin_cn/article/details/140890422

相关文章

  • 流量回放技术测试领域应用及GoReplay demo实践总结
    目录前言基本概念流量回放的优势1.高度模拟真实环境:2.提高测试覆盖率:3.快速定位和复现问题:4.减少测试时间和成本:5.支持持续集成和持续部署(CI/CD):6.增强安全性测试:7.支持多场景测试:8.数据驱动的测试:9.提高团队协作效率:10.易于集成和扩展:方案比较1.Nginx层流量......
  • Node.js 通过mongose连mongoDB
    直接用的mongoDBAtlas,有免费的云集群可以用,免费的mongoDBAtlasmongose是一个对象文档映射(ODM)库,用来在node.js上和mongoDB交互的。比较详细的介绍见这个:https://www.freecodecamp.org/news/introduction-to-mongoose-for-mongodb-d2a7aa593c57/建立连接这里的path是你的mo......
  • 2024-08-03:用go语言,给定一个从 0 开始的字符串数组 `words`, 我们定义一个名为 `isPref
    2024-08-03:用go语言,给定一个从0开始的字符串数组words,我们定义一个名为isPrefixAndSuffix的布尔函数,该函数接受两个字符串参数str1和str2。当str1同时是str2的前缀和后缀时,函数返回true;否则返回false。例如,isPrefixAndSuffix("aba","ababa")返回true,因为"ab......
  • Go Lang给应用添加带彩色的启动横幅
    1.命令行输入以下命令来安装相关依赖包:-gogetgithub.com/dimiro1/banner-gogetgithub.com/mattn/go-colorable packagemainimport( "fmt" "github.com/dimiro1/banner" "github.com/mattn/go-colorable")funcinit(){ isEnabled:=true......
  • go select case的一个小坑
    业务背景之前在写很多ifelse时,对于不符合的分支条件总是习惯提前返回,减少对后面分支的心智负担,最近在写1个go项目时,对于比较少使用go,在forselect结构里遇到错误返回,导致直接返回了,后续tick就无效了代码抽离简化如下funcConsumer(){ tick:=time.NewTicker(time.Durati......
  • 实现一个终端文本编辑器来学习golang语言:第一章项目构建
    欢迎!这个系列的博文会带你使用golang语言来编写一个你自己的文本编辑器。更多介绍见https://www.cnblogs.com/Ama2ingYJ/p/18340634这里我把我们的文本编辑器项目命名为zedterm。首先第一步自然是初始化golang工程gomodinitzedterm作为文本编辑器,其中重要的一个工作便是......
  • 实现一个终端文本编辑器来学习golang语言
    欢迎!这个系列的博文会带你使用golang语言来编写一个你自己的文本编辑器。首先想说说写这个系列文章的动机。其实作为校招生加入某头部互联网大厂一转眼已经快4年了。可以说该大厂算是比较早的用golang语言作为主要后端开发技术栈的公司了,绝大部分后端项目的语言选型都是golang......
  • 在django中以一对一的关系保存表单数据
    我与Django用户模型和自定义配置文件模型具有一对一的关系。我尝试在用户注册时同时保存用户和个人资料数据。但问题是配置文件模型的数据未验证且数据未保存在数据库中这是代码model.pyclassProfile(models.Model):user=models.OneToOneField(User,on_delete=......
  • go-zero 微服务框架集成 gorm 实操
    目录1.config的结构体2.配置文件声明3.添加svcContext4.定义你的相关表或者模型作为服务,肯定要和数据库交互的,所以在go-zero框架里集成数据库的操作是必不可少的,今天看看go-zero的rpc应用如何集成gorm框架。总体的思路分这几步:定义你的配置项结构体定义你的配置......
  • 第一个Django工程创建及运行
    认识DjangoDjango是一个高级PythonWeb框架,它鼓励快速开发和简洁、实用的设计。它由经验丰富的开发人员构建,解决了Web开发的大部分麻烦,因此您可以专注于编写应用程序,而无需重新发明轮子。它是免费和开源的。快得离谱。Django旨在帮助开发人员尽快将应用程序从概念到......