当前位置:网站首页>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/
边栏推荐
- pcl::fromROSMsg报警告Failed to find match for field ‘intensity‘.
- Flutter 小技巧之 ListView 和 PageView 的各種花式嵌套
- Opencv environment construction (I)
- How do microservices aggregate API documents? This wave of show~
- Global and Chinese market of air fryer 2022-2028: Research Report on technology, participants, trends, market size and share
- Flutter tips: various fancy nesting of listview and pageview
- ASP. Net to access directory files outside the project website
- Logstack configuration details -- elasticstack (elk) work notes 020
- Development trend and market demand analysis report of high purity tin chloride in the world and China Ⓔ 2022 ~ 2027
- UML sequence diagram [easy to understand]
猜你喜欢
Target detection -- intensive reading of yolov3 paper
GoLand environment variable configuration
If you can quickly generate a dictionary from two lists
Langage C - démarrer - base - syntaxe - [opérateur, conversion de type] (vi)
Clion console output Chinese garbled code
MySQL foundation 02 - installing MySQL in non docker version
【LeetCode 42】501. Mode in binary search tree
Implementation principle of redis string and sorted set
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
How to ensure the uniqueness of ID in distributed environment
随机推荐
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
Leetcode (Sword finger offer) - 35 Replication of complex linked list
Daughter love: frequency spectrum analysis of a piece of music
Implementing expired localstorage cache with lazy deletion and scheduled deletion
Mantis creates users without password options
At the age of 30, I changed to Hongmeng with a high salary because I did these three things
Clion console output Chinese garbled code
The 14th five year plan and investment risk analysis report of China's hydrogen fluoride industry 2022 ~ 2028
How to write unit test cases
How to display √ 2 on the command line terminal ̅? This is actually a blog's Unicode test article
Implementation principle of redis string and sorted set
Analysis report on the production and marketing demand and investment forecast of tellurium dioxide in the world and China Ⓣ 2022 ~ 2027
Report on research and investment prospect prediction of China's electronic grade sulfuric acid industry (2022 Edition)
China battery grade manganese sulfate Market Forecast and strategic consulting report (2022 Edition)
Write a jison parser (7/10) from scratch: the iterative development process of the parser generator 'parser generator'
What is uid? What is auth? What is a verifier?
In depth investigation and Strategic Research Report on China's motion controller Market (2022 Edition)
《网络是怎么样连接的》读书笔记 - Tcp/IP连接(二)
Trim leading or trailing characters from strings- Trim leading or trailing characters from a string?
Global and Chinese market of bipolar generators 2022-2028: Research Report on technology, participants, trends, market size and share