当前位置:网站首页>Golang Modules
Golang Modules
2022-07-04 09:33:00 【动态一时爽,重构火葬场】
创建新module
在$GOPATH/src之外的文件夹(比如//hello),创建全新的go文件,比如说hello.go。并且让我们为他写个test。运行之后会发现
PASS
ok _/hello
因为我们工作在 $GOPATH和任意模块之外,go 命令不知道当前目录的导入路径(导入路径是标识包的唯一字符串标识)所以根据目录所在位置创建了一个假的导入路径 _/hello
让我们使用go mod init将文件夹初始化为module吧!
go mod init demo.com/hello
go mod init将会写go.mod文件
go.mod仅仅只会出现在模块的根目录。在模块下的子目录包导入路径由模块路径加子目录路径组成。比如说模块下有子目录/world,那么导入路径就为demo.com/hello/world
添加依赖
go命令通过使用go.mod中列出特定依赖模块版本来解析导入。当go.mod未指定时,会自动找到最新依赖,添加到go.mod
当然除了go.mod中列出的直接依赖之外,还有一些间接依赖。比如说rsc.io/quote这个模块还依赖rsc.io/sampler,那么rsc.io/sampler也会下载
可通过
go list -m all列出当前模块所有依赖项
此外,go.sum还记录来依赖模块版本的加密哈希值。但go.sum并不是package-lock.json,只会记录当前模块所有直接间接的依赖,以及校验和。
升级依赖
我们可以通过go get来升级到最新依赖版本。
但有时也会出现不兼容的情况
$ go get rsc.io/sampler
go: finding rsc.io/sampler v1.99.99
go: downloading rsc.io/sampler v1.99.99
go: extracting rsc.io/sampler v1.99.99
$ go test
--- FAIL: TestHello (0.00s)
hello_test.go:8: Hello() = "99 bottles of beer on the wall, 99 bottles of beer, ...", want "Hello, world."
FAIL
exit status 1
FAIL example.com/hello 0.014s
$
此时可以列出所有模块可用tagged版本,然后选择兼容版本下载
$ go list -m -versions rsc.io/sampler
rsc.io/sampler v1.0.0 v1.2.0 v1.2.1 v1.3.0 v1.3.1 v1.99.99
$ go get rsc.io/[email protected]
删除依赖
go mod tidy会清除这些未使用的依赖项
添加依赖的主版本
假设我们要用一个依赖的多个不同的主版本
package hello
import (
"rsc.io/quote"
quoteV3 "rsc.io/quote/v3"
)
func Hello() string {
return quote.Hello()
}
func Proverb() string {
return quoteV3.Concurrency()
}
Go模块的每个不同的版本都使用不同的模块路径。
replace 替换require中声明依赖
module demo
replace outter => /local/outter
require (
outter v1.0.0
)
Ref
- https://go.dev/blog/using-go-modules
- https://thewebivore.com/using-replace-in-go-mod-to-point-to-your-local-module/
边栏推荐
- 《网络是怎么样连接的》读书笔记 - Tcp/IP连接(二)
- UML 时序图[通俗易懂]
- Ultimate bug finding method - two points
- Function comparison between cs5261 and ag9310 demoboard test board | cost advantage of cs5261 replacing ange ag9310
- The child container margin top acts on the parent container
- QTreeView+自定义Model实现示例
- Global and Chinese trisodium bicarbonate operation mode and future development forecast report Ⓢ 2022 ~ 2027
- 20220701 barbarat lemma proof
- 2022-2028 global edible probiotic raw material industry research and trend analysis report
- Dede plug-in (multi-function integration)
猜你喜欢

Implementation principle of redis string and sorted set

How do microservices aggregate API documents? This wave of show~

SSM online examination system source code, database using mysql, online examination system, fully functional, randomly generated question bank, supporting a variety of question types, students, teache
自动化的优点有哪些?

HMS core helps baby bus show high-quality children's digital content to global developers

PHP book borrowing management system, with complete functions, supports user foreground management and background management, and supports the latest version of PHP 7 x. Database mysql

ArrayBuffer
![Reload CUDA and cudnn (for tensorflow and pytorch) [personal sorting summary]](/img/3f/a71b56a62d2a0d64749a6af05384f5.jpg)
Reload CUDA and cudnn (for tensorflow and pytorch) [personal sorting summary]

Four common methods of copying object attributes (summarize the highest efficiency)

Dede plug-in (multi-function integration)
随机推荐
Write a jison parser from scratch (3/10): a good beginning is half the success -- "politics" (Aristotle)
PHP is used to add, modify and delete movie information, which is divided into foreground management and background management. Foreground users can browse information and post messages, and backgroun
Global and Chinese market of wheel hubs 2022-2028: Research Report on technology, participants, trends, market size and share
How does idea withdraw code from remote push
You can see the employment prospects of PMP project management
Opencv environment construction (I)
How do microservices aggregate API documents? This wave of show~
C language - Introduction - Foundation - syntax - [main function, header file] (II)
Reload CUDA and cudnn (for tensorflow and pytorch) [personal sorting summary]
What is uid? What is auth? What is a verifier?
mmclassification 标注文件生成
Flutter 小技巧之 ListView 和 PageView 的各种花式嵌套
什么是权限?什么是角色?什么是用户?
The old-fashioned synchronized lock optimization will make it clear to you at once!
Nurse level JDEC addition, deletion, modification and inspection exercise
Global and Chinese market of sampler 2022-2028: Research Report on technology, participants, trends, market size and share
QTreeView+自定义Model实现示例
Simulate EF dbcontext with MOQ - mocking EF dbcontext with MOQ
Solve the problem of "Chinese garbled MySQL fields"
Solution to null JSON after serialization in golang