Go : golang发布三方包流程简介

news2024/11/23 13:20:48

文章目录

    • 一、创建项目仓库
    • 二、拉去仓库,编辑代码
    • 三、推送与发布代码
    • 四、使用发布的第三方包
    • 小结


一、创建项目仓库

1.输入仓库的名字,我这里输入simpleExample,用来做演示
2.选择public,公开。要不并不好拉
3.选择需要添加的文件(可选)
4.点击create repository创建此仓库
在这里插入图片描述

完成后就有一个名为simpleExample的项目仓库,如下图所示。
在这里插入图片描述

二、拉去仓库,编辑代码

1.点击code, 复制https的URL
2.使用git,把这个项目clone下来
在这里插入图片描述

例如,我在这里的使用的git命令如下

git clone https://github.com/Golzaes/simpleExample.git

3.go module初始化

+ go mod init "github.com/Golzaes/simpleExample"
- go mod init "github.com/组织名/项目名" 

注意:这里的一定是"github.com/组织名/项目名"这样的格式

4.示例代码

// Example/example.go
package exampleCode

import "math/rand"

// ReadNumber create random number
func ReadNumber() int {
	// random number range
	rnr := 10
	//  returns, as an int, a non-negative pseudo-random number in [0,n)
	return rand.Intn(rnr)
}

注意这里的函数名ReadNumber,首字母必须大写!!!否则无法再外部调用此函数

来个简单的单元测试

// Example/example_test.go
package exampleCode

import "testing"

func TestReadNumber(t *testing.T) {
	tests := []struct {
		name string
		want int
	}{
		// TODO: Add test cases.
		{
			"exampleCode1",
			1,
		}, {
			"exampleCode2",
			2,
		}, {
			"exampleCode3",
			3,
		}, {
			"exampleCode4",
			4,
		},{
			"exampleCode5",
			5,
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := ReadNumber(); got != tt.want {
				t.Errorf("ReadNumber() = %v, want %v", got, tt.want)
			}
		})
	}
}

5.运行调试
在这里插入图片描述

三、推送与发布代码

1.提交代码

git add exampleCode/
git commit -am "add exampleCode"
git push origin master

在这里插入图片描述
2.发布包
点击releases下面的create a new releases
在这里插入图片描述

填写标签号(常规格式是 x.y.z)例如我的v0.0.1,填写发表的标题,一般是项目名,填写简介
在这里插入图片描述

点击 左下方的publish release,进行发布,发布完成后会自动跳转到如下图所示的发布栏
在这里插入图片描述
至此,发布部分就已经完成了。那么自己来测试一下这个第三方包

四、使用发布的第三方包

1、新建一个项目、go mod init初始化、创建文件夹就不过多赘述了
2、下载我们发布的包

go get github.com/Golzaes/simpleExample/exampleCode

3、import包并且测试
在这里插入图片描述

小结

本文从创建仓库开始到发布第三方包后到使用第三方包,这样我们就可以跨项目使用啦。如果测试未完成,请重新查阅。尤其是注意点!!!

参考: https://www.freesion.com/article/52741516937/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/28508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用PyPy加速Python程序

用PyPy加速Python程序 在《Python性能优化指南–让你的Python代码快x3倍的秘诀》中有提到,我们可以用更好的Python运行环境或运行时优化来提升Python的速度,其中最成熟、使用最简单的当属PyPy。用PyPy,可以在不改变源代码的情况下&#xff…

二叉树相关OJ - C++

文章目录:根据二叉树创建字符串二叉树的层序遍历二叉树的最近公共祖先二叉搜索树与双向链表从前序与中序遍历序列构造二叉树从中序与后序遍历序列构造二叉树二叉树的前序遍历(非递归)二叉树的中序遍历(非递归)二叉树的…

【LeetCode与《代码随想录》】数组篇:做题笔记与总结-Java版

代码随想录地址 是学习过程中的笔记!图来自代码随想录。 文章目录理论题目704. 二分查找35. 搜索插入位置34. 在排序数组中查找元素的第一个和最后一个位置69. x 的平方根367.有效的完全平方数理论 数组是存放在连续内存空间上的相同类型数据的集合。 数组下标都是…

[附源码]java毕业设计新能源汽车租赁管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

基于armv8的kvm实现分析(一)虚拟化介绍

本文基于以下软硬件假定: 架构:AARCH64 内核版本:5.14.0-rc5 1 什么是虚拟化 虚拟化就是把一台物理计算机虚拟成多台逻辑计算机,每台逻辑计算机里面可以运行不同操作系统,而相互之间不受影响,其典型架构…

面试了个 985 毕业的同学,回答“性能调优”题时表情令我毕生难忘

又逢“金九银十”,年轻的毕业生们满怀希望与忐忑,去寻找、竞争一个工作机会。已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而,面试人群众多,技术市场却相对冷淡,面…

JavaIO流:概述

在接触 IO 流前,无论是 变量的声明、数组的创建,又或者是复杂的并发设计还是 Jvm 的性能调优,我们更多的还是和内存打交道。但我们知道计算机组成包括运算器,控制器,存储器,输入设备,输出设备。…

springcloud4:服务注册中心Eureka

直接调用即可,为什么用Eureka什么是服务治理? 多个服务调用,需要有依赖中心管理什么是服务注册? 有一个注册中心,当服务器启动时,会把自己的信息注册到注册中心上什么是服务发现? Client通过注册…

electron打包ffi-napi报错 npm ERR! gyp reason: read ECONNRESET

问题描述 这个问题用了我两天的时间,所以记录一下。 我们项目是使用electronvue,做支付功能的时候需要使用到ffi-napi依赖包。 最后打包的时候ffi-napi报错了,在package.json中去掉ffi-napi就可以打包,但是打包运行后提示缺少ff…

re:Invent 2022,探秘亚马逊云科技的重量级计算创新——Nitro

诞生于16年前的亚马逊云科技,开创了一个全新的云计算领域。秉持着创新与探索精神,自2012年开始,在每年一度的re:Invent全球大会上,亚马逊云科技都会发布最新的云计算技术。对IT产业演进产生了革命性的影响,Nitro系统就…

Java笔记(工厂模式、动态代理、XML)

一、工厂模式 软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的复用性。 什么…

代码随想录算法训练营第四十三天| LeetCode1049. 最后一块石头的重量 II、LeetCode494. 目标和、LeetCode474. 一和零

一、LeetCode1049. 最后一块石头的重量 II 1:题目描述(1049. 最后一块石头的重量 II) 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将…

让你快速高效的掌握linux内核编译过程

Linux内核编译 一、linux内核的配置与编译: 1.配置内核 1)导入默认配置: make xxxx_defconfig 注1:xxxx表示内核支持的芯片的名称 比如make exynos_defconfig 注2:内核源码中对每个支持的芯片都有默认的配置,默认配置很…

【博学谷学习记录】超强总结,用心分享|架构师-RabbitMQ消息可靠性保障

文章目录一、生产者保证1.1 失败通知1.2 发送方确认1.3 Broker丢失消息二、消费方消息可靠性2.1 消费者手动确认消息依靠三个对象:生产者、消费者、broker一、生产者保证 生产者发送消息到broker时,要保证消息的可靠性,主要的方案有&#xf…

5.28 综合案例2.0-简易起夜灯

HaaS506 - 简易起夜灯简介准备硬件连接图功能实现1.继电器使用说明2. 5.8G雷达感应传感器模块说明3.简易代码3.1测试log简介 案例为了解决晚上起床找不到灯的问题。当你从床上起来时,雷达感应传感器检测到你的活动后自动打开电灯。省去了寻找电灯开关的麻烦。 准备…

java学习笔记 day07-Java基础-综合练习

练习一:飞机票 需求: ​ 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 ​ 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来…

表白墙(web版)

文章目录前言一、需求分析1.表白墙页面设计2.表白墙功能二、实现1.客户端2.服务器端3.连接数据库前言 前面前端部分写过一个表白墙页面,但是它不能存储提交信息,为了能够让它在提交信息后可以保存其信息,页面刷新后信息依然存在,…

itk配准整理(1)

示例地址: itk\ITK\Examples\RegistrationITKv4\ImageRegistration7.cxx 说明:itk二维图像的配准:平移旋转缩放 效果图: 运行结果: 52 53.6213 [0.8333298229719548, -0.17450270771316403, -12.806452097490313, -1…

在Win10中使用YAMAHA S-YXG50软波表

曾经非常经典的一款软波表YAMAHA S-YXG50我个人非常的喜欢。在XP系统的时代,是我必装的软件,用来听一些MIDI音质和效果很好。而如今玩MIDI的人越来越少了,软波表的时代也被人渐渐的遗忘了。 如今想要怀旧的话,只能够找一台老电脑…

LINUX的XEN和KVM到底区别在什么地方?

本文调研的是 Completely Fair Scheduler 算法, 它当前是 Linux 中 SCHED_NORMAL(非实时任务) 一类 task 的默认调度器. 实际上, 运行在 Guest OS 中的应用程序线程还受到 Guest OS 的调度, 分时运行在 vCPU 上, 但这不在本文调研范围内. 本文仅调研 vCPU 被如何调度到 pCPU 上…