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

结束.

相关文章
|
6月前
|
Go 开发者
Go语言包的组织与导入 -《Go语言实战指南》
本章详细介绍了Go语言中的包(Package)概念及其使用方法。包是实现代码模块化、复用性和可维护性的核心单位,内容涵盖包的基本定义、命名规则、组织结构以及导入方式。通过示例说明了如何创建和调用包,并深入讲解了`go.mod`文件对包路径的管理。此外,还提供了多种导入技巧,如别名导入、匿名导入等,帮助开发者优化代码结构与可读性。最后以表格形式总结了关键点,便于快速回顾和应用。
283 61
|
2月前
|
Java 编译器 Go
【Golang】(1)Go的运行流程步骤与包的概念
初次上手Go语言!先来了解它的运行流程吧! 在Go中对包的概念又有怎样不同的见解呢?
162 4
|
5月前
|
JSON 中间件 Go
Go语言实战指南 —— Go中的反射机制:reflect 包使用
Go语言中的反射机制通过`reflect`包实现,允许程序在运行时动态检查变量类型、获取或设置值、调用方法等。它适用于初中级开发者深入理解Go的动态能力,帮助构建通用工具、中间件和ORM系统等。
314 63
|
4月前
|
缓存 监控 安全
告别缓存击穿!Go 语言中的防并发神器:singleflight 包深度解析
在高并发场景中,多个请求同时访问同一资源易导致缓存击穿、数据库压力过大。Go 语言提供的 `singleflight` 包可将相同 key 的请求合并,仅执行一次实际操作,其余请求共享结果,有效降低系统负载。本文详解其原理、实现及典型应用场景,并附示例代码,助你掌握高并发优化技巧。
341 0
|
7月前
|
Go 持续交付 开发者
Go语言包与模块(module)的基本使用-《Go语言实战指南》
本章深入讲解Go语言中的包(Package)和模块(Module)概念。包是代码组织的最小单位,每个`.go`文件属于一个包,通过`import`实现复用;主程序包需命名为`main`。模块是Go 1.11引入的依赖管理机制,支持自动版本管理和私有/远程仓库,无需依赖GOPATH。通过实际示例,如自定义包`mathutil`和第三方模块`gin`的引入,展示其使用方法。常用命令包括`go mod init`、`go mod tidy`等,帮助开发者高效管理项目依赖。最后总结,包负责功能划分,模块实现现代化依赖管理,提升团队协作效率。
299 15
|
10月前
|
存储 算法 Go
Go语言实战:错误处理和panic_recover之自定义错误类型
本文深入探讨了Go语言中的错误处理和panic/recover机制,涵盖错误处理的基本概念、自定义错误类型的定义、panic和recover的工作原理及应用场景。通过具体代码示例介绍了如何定义自定义错误类型、检查和处理错误值,并使用panic和recover处理运行时错误。文章还讨论了错误处理在实际开发中的应用,如网络编程、文件操作和并发编程,并推荐了一些学习资源。最后展望了未来Go语言在错误处理方面的优化方向。
159 5
|
Linux Go iOS开发
怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
本文介绍了如何在 VSCode 中禁用点击 Go 包名时自动打开浏览器跳转到 pkg.go.dev 的功能。通过将 gopls 的 `ui.navigation.importShortcut` 设置为 "Definition",可以实现仅跳转到定义处而不打开链接。具体操作步骤包括:打开设置、搜索 gopls、编辑 settings.json 文件并保存更改,最后重启 VSCode 使设置生效。
475 8
怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev
|
11月前
|
Go 数据库
Go语言中的包(package)是如何组织的?
在Go语言中,包是代码组织和管理的基本单元,用于集合相关函数、类型和变量,便于复用和维护。包通过目录结构、文件命名、初始化函数(`init`)及导出规则来管理命名空间和依赖关系。合理的包组织能提高代码的可读性、可维护性和可复用性,减少耦合度。例如,`stringutils`包提供字符串处理函数,主程序导入使用这些函数,使代码结构清晰易懂。
386 11
|
Go 索引
go语言使用strings包
go语言使用strings包
276 3
|
编译器 Go 开发者
go语言中导入相关包
【11月更文挑战第1天】
187 3

热门文章

最新文章