Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面试官:你有自己的开源库么?

面试官:你有自己的开源库么?

作者头像
小锟哥哥
发布于 2022-05-10 01:04:28
发布于 2022-05-10 01:04:28
30400
代码可运行
举报
文章被收录于专栏:GoLang全栈GoLang全栈
运行总次数:0
代码可运行

面对一个新功能,我们一般第一想到的就是有没有这样的库可以直接使用呀?

所以,我们在开发中做的最多的就是拉库。

但是随着我们代码越写越牛,往往会有很多自己常用的库,很多人可能就是在下一个项目里面去拷贝上一个项目里面的代码。

但是这样貌似不太高级。

我们是否可以像别的大牛一样,发布自己的库给别人用呢?

答案是肯定的。

于是这篇文章我们就来一步一步的带大家把自己的库发布到 Github 上。

新建项目

首先我们需要在 Github 上新建一个公开项目:

这里一定要选 Public 类型,否则常规的 go get 拉取代码时会无法拉取。

项目名字你随意,我这里就叫 kud 随便取的。

准备代码

我们新建一个项目,在里面初始化好 go mod,我想现在库管理的,应该没有用其他的工具了吧。

在项目下面执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go mod init github.com/GoLangStackDev/kud

这里的 github.com/GoLangStackDev/kud 是你的仓库地址,在你新建仓库后的提示页面里面可以看到:

记住不要带上 .git !!!

记住不要带上 .git !!!

记住不要带上 .git !!!

随后你就能看到你的 go.mod 文件长成了这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module github.com/GoLangStackDev/kud

go 1.17

go 1.17 是我本地的 go 版本,可能和你的不一样,这个不影响。

开始编写代码

到这里你就可以开始写你的代码了。

这里我就随便写点代码,新建一个 string.go 文件,写入下面的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package kud

import (
 "math/rand"
 "time"
)

// GetRandomString 生成随机字符串
func GetRandomString(l int) string {
 str := "23456789abcdefghijkmnpqrstuvwxyz"
 bytes := []byte(str)
 result := []byte{}
 r := rand.New(rand.NewSource(time.Now().UnixNano()))
 for i := 0; i < l; i++ {
  result = append(result, bytes[r.Intn(len(bytes))])
 }
 return string(result)
}

写完后,就可以上传到仓库里面了。

上传代码部分这里就省略了哈。

发版本

当你代码上传成功后,就可以像使用其他三方库一样,直接 go get 拉取就好了。

但是这样会有一个问题,每次拉取他都会获取你 master 分支里面的最新的代码。

拉下来就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ go get github.com/GoLangStackDev/kud
go get: added github.com/GoLangStackDev/kud v0.0.0-20220111073608-36510a889cc4

他会默认给你取名叫 v0.0.0版本。

怎么发版?

发版也很简单,只需要给你的代码打 tag 就好了

但是这个 tag 版本的格式必须得是 vx.x.x 这样的三位,否者 go mod 会找不到版本号。

如何打 tag 不做赘述:

我这里我给打了 v0.1.1 的 tag 。

此时我们就可以按版本拉代码了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ go get github.com/GoLangStackDev/kud@v0.1.1
go get: upgraded github.com/GoLangStackDev/kud v0.0.0-20220111073608-36510a889cc4 => v0.1.1

使用

使用和别的库没任何区别:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import (
 "fmt"
 "github.com/GoLangStackDev/kud"
)

func main() {
 fmt.Println(kud.GetRandomString(3))
}

你学废了吗?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GoLang全栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
golang mod 入门
go modules 是 golang 1.11 新加的特性。现在1.12 已经发布了,是时候用起来了。Modules官方定义为:
goodspeed
2020/12/22
8500
Golang中的包管理工具 - Go Modules
在Go1.5之前使用GOROOT和GOPATH这2个系统环境变量来决定包的位置,对于开发者主要使用GOPATH。GOPATH 解决了第三方源码依赖的问题,看一下我本机 $GOPATH/src 下的目录:
猿哥
2019/08/01
1.6K0
Git 代码分支管理 / 版本管理
即使只有一个人发开,也会考虑代码的安全而分多个分支。多人协同开发时,可能每个人在不同的分支开发,也可能不同团队在不同的分支开发,还有就是不同的功能在不同的分支开发。
Python碎片公众号
2021/02/26
2.3K0
Git 代码分支管理 / 版本管理
Go Module详细使用教程,包管理不在难
go modules是 golang 1.11引入的新特性。模块是相关Go包的集合。modules是源代码交换和版本控制的单元。go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
公号:咻咻ing
2020/03/04
20.6K0
GitFlow 代码管理模型实战
Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架。
耕耘实录
2021/03/20
6130
开发属于自己的composer
1.新建一个git仓库 备注:可以在github建立,如果要建立私有的composer,可以自己搭建git仓库 2.初始化composer文件 执行composer init 参考:https://getcomposer.org/doc/04-schema.md { "name": "joyousphper/composer-demo", "description": "composer demo", "type": "library", "license": "MIT",
苦咖啡
2018/04/28
7460
面试官说又逮到一个不会用Git的
Git是一个分布式的(每台电脑都有自己的本地仓库,github、码云之类只作为中转站)版本控制工具,说白了就是拉代码、提交代码的多人协作工具。
崩天的勾玉
2021/12/20
3540
面试官说又逮到一个不会用Git的
Go Modules知识点总结
起初Go语言在1.5之前没有依赖管理工具,若想引入依赖库,需要执行go get命令将代码拉取放入GOPATH/src目录下,作为GOPATH下的全局依赖,这也就意味着没有版本控制及隔离项目的包依赖;
Golang梦工厂
2023/02/26
8630
Go Modules知识点总结
Git的一些使用笔记
从拉远端代码到本地仓库 git pull origin master:master
苦咖啡
2018/07/19
6850
go mod使用
最近由于换工作,开始交接工作。整理以前的工作内容,由于组内就我一个在做go和大数据。 所以开发没有规划,当时是怎么快怎么来。go也是使用最传统的go path的方式管理的。都是手动管理依赖的。现在交接给他人,需要多人开发,发现很多问题。比如版本问题,各种依赖的问题等等。
若与
2020/05/18
1.6K0
go module
go 1.5 引进了vendor管理工程依赖包,但是vendor的存放路径是在GOPATH底下,另外每个依赖还可以有自己的vendor,通常会弄得很乱,尽管dep管理工具可以将vendor平级化管理,但是相对GOPATH的路径是逃不掉的。另外,各个包的版本管理也显得原始,甚至有的开发将依赖包从github直接download下来自己放到GOPATH底下的vendor。go的依赖包管理一致是开发者诟病的一个痛点。所以在千呼万唤中,go 1.11 终于引进了go module管理工程的包依赖,去除了项目包管理对GOPATH的依赖,明确了依赖包的版本管理。
用户2937493
2019/09/10
1.3K0
go module
从 0 到 1 创建、测试并发布属于自己的 Go 开源库
在日常开发中,我们经常使用由组织或个人开发和维护的第三方开源库,这些库大大提高了我们的开发效率,让我们能够专注于实现业务逻辑而不是重复造轮子。如果你对提高代码复用感兴趣,并希望将自己封装的高质量代码发布为一个开源库,那么这篇文章正是为你准备的。
陈明勇
2024/04/22
3100
从 0 到 1 创建、测试并发布属于自己的 Go 开源库
Go Modules 终极入门
Go modules 是 Go 语言中正式官宣的项目依赖解决方案,Go modules(前身为vgo)于 Go1.11 正式发布,在 Go1.14 已经准备好,并且可以用在生产上(ready for production)了,Go 官方也鼓励所有用户从其他依赖项管理工具迁移到 Go modules。
madneal
2020/03/10
1.9K0
Go Modules 终极入门
Python - poetry(5)依赖规范
markers 官方文档:https://www.python.org/dev/peps/pep-0508/#environment-markers
小菠萝测试笔记
2021/09/23
3680
发布 Go Modules
请注意:这篇文章涵盖了 v1 及其之前的开发,如果您对 v2 感兴趣,请参阅 Go Modules: v2 and Beyond。
恋喵大鲤鱼
2020/09/16
7770
深入理解 Go Modules 的 go.mod 与 go.sum
流行的现代编程语言一般都提供依赖库管理工具,如 Java 的 Maven 、Python 的 PIP、Node.js 的 NPM 和 Rust 的 Cargo 等。Go 最为一门新生代语言,自然也有其自己的库管理方式。
恋喵大鲤鱼
2022/06/12
15K0
深入理解 Go Modules 的 go.mod 与 go.sum
3分钟带你掌握 go mod 导入本地包
所以这就涉及到引入别人的代码,得有效避免重复造轮子,在 Go 语言里面,这个操作也叫引包。
小锟哥哥
2022/05/10
16.6K0
3分钟带你掌握 go mod 导入本地包
GitFlow 实践命令
程序熵
2024/11/11
410
GitFlow 实践命令
GoLang 新版包管理 -- go module 的使用
上一篇文章中,我们介绍了 GoLang 中包的使用与包管理机制。 GoLang 包的使用与管理
用户3147702
2022/06/27
2.4K0
GoLang 新版包管理 -- go module 的使用
Go编程之相关命令工具记录
该命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装,整个过程类似安装App一样;
全栈工程师修炼指南
2022/09/29
6280
相关推荐
golang mod 入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验