Go 引入自定义包

简介: 想做一个go的公共助手包,但涉及公司业务逻辑不能放在公有仓库,只能引入私有仓库。

Go 引入自定义包

想做一个go的公共助手包,但涉及公司业务逻辑不能放在公有仓库,只能引入私有仓库。

仓库地址:gitlab.xxx.com

配置私有代理

go env -w GOPRIVATE=gitlab.xxx.com

项目中引入

require gitlab.xxx.com/{first}/{second} v{tag}

使用最新提交

go get -u gitlab.xxx.com/{first}/{second}@{提交SHA}

如果目录超过两级会拉取不成功,这时可以使用 replace 来引入

require gitlab.xxx.com/{first}/{second} v{version}

replace gitlab.xxx.com/{first}/{second} v{version} gitlab.xxx.com/{one}/{two}/{three} v{tag}

使用最新提交

require gitlab.xxx.com/{first}/{second} v{version}

replace gitlab.xxx.com/{first}/{second} v{version} gitlab.xxx.com/{one}/{two}/{three} {提交SHA}

然后更新引入就可以了

go mod tidy
go mod vendor

阿里云 codeup 代码拉取不成功

如果你的代码托管平台是阿里云的codeup则会出现代码拉取失败:

Codeup 的代码托管具备多级组的结构组织能力,同时由于 Codeup 不支持全局公开仓库,因此为了企业数据的安全考虑,在使用 Go 的依赖管理时必须使用鉴权。

在 Go 1.13 改进了对 .netrc 身份验证的支持。如果通过 HTTPS 发出请求并且可以找到匹配的 .netrc 条目,Go 会向请求添加 HTTP 基本身份验证凭据。

Codeup上使用 .netrc 的最佳实践

在 Codeup 上申请可用于HTTP验证密钥或者口令。

例如,在 Codeup 上申请的可用于读取仓库账号为 foo,token为 bar。那么对应的 .netrc 配置信息为:

machine codeup.aliyun.com login foo password bar

Linux\macOS

文件应该存放在执行账户的根目录下,即:~/.netrc。

Windows

  • 定义环境变量 %HOME%,值为 %USERPROFILE%

  • 在 %HOME% 路径下新建一个文件 _netrc

  • 在 _netrc 中配置上述的配置信息

machine codeup.aliyun.com
login foo
password bar

结束.

相关文章
|
3天前
|
编译器 Go 开发者
go语言中导入相关包
【11月更文挑战第1天】
14 3
|
23天前
|
存储 Go 数据库
Go语言Context包源码学习
【10月更文挑战第21天】Go 语言中的 `context` 包用于在函数调用链中传递请求上下文信息,支持请求的取消、超时和截止时间管理。其核心接口 `Context` 定义了 `Deadline`、`Done`、`Err` 和 `Value` 方法,分别用于处理截止时间、取消信号、错误信息和键值对数据。包内提供了 `emptyCtx`、`cancelCtx`、`timerCtx` 和 `valueCtx` 四种实现类型,满足不同场景需求。示例代码展示了如何使用带有超时功能的上下文进行任务管理和取消。
|
2月前
|
存储 Go
Golang语言基于go module方式管理包(package)
这篇文章详细介绍了Golang语言中基于go module方式管理包(package)的方法,包括Go Modules的发展历史、go module的介绍、常用命令和操作步骤,并通过代码示例展示了如何初始化项目、引入第三方包、组织代码结构以及运行测试。
43 3
|
3月前
|
编译器 数据库连接 Go
Go Sync 包:并发的 6 个关键概念
Go Sync 包:并发的 6 个关键概念
|
3月前
|
Go 开发者
|
3月前
|
编译器 Go 开发者
|
3月前
|
存储 SQL Go
一文弄懂Go语言的Context包,值得收藏!
在开发高效的Go应用程序时,处理超时、取消操作和传递请求范围的数据至关重要。Go标准库中的`context`包提供了一套强大的工具,用于在不同层级间传递取消信号、超时和截止时间等信息。本文首先概述了`context`包的核心功能,接着详细介绍了关键方法,如`WithCancel`、`WithDeadline`、`WithTimeout`和`WithValue`的使用场景。通过创建和派生上下文,开发者能更好地管理请求的生命周期,控制长时间运行的操作,并在并发环境中传递必要的数据。
50 1
|
3月前
|
缓存 Go
Go引用包版本更新但是被引用的包的子包并没有出现在vendor中的问题和解决方案
文章讨论了在Go模块项目中升级依赖包版本时遇到的子包未出现在vendor目录的问题,并提供了直接删除旧版本引用并重新执行`go mod vendor`的解决方案。
36 0
|
4月前
|
存储 Go
go语言中fmt格式化包和内置函数汇总
【7月更文挑战第10天】本文介绍fmt包和`Errorf`用于创建格式化的错误消息。`fmt`包还涉及一些接口,如`Formatter`、`GoStringer`、`ScanState`、`Scanner`和`Stringer`,支持自定义格式化和输入/输出处理。
73 1
|
4月前
|
存储 Go 索引
在go语言中自定义泛型的变长参数
【7月更文挑战第8天】在Go语言中,由于官方1.18以前的版本不支持泛型,可以通过空接口和反射模拟泛型。泛型适用于通用数据结构和函数,虽牺牲了一些性能,但提高了代码复用和类型安全性。
66 1