当前位置:网站首页>Golang Modules
Golang Modules
2022-07-04 09:37:00 【Dynamic for a while, reconstructing the crematorium】
Create a new module
stay $GOPATH/src Folder outside ( such as //hello), Create a new go file , for instance hello.go. And let's write him a test. It will be found after running
PASS
ok _/hello
Because we work in $GOPATH And any module outside ,go The command does not know the import path of the current directory ( The import path is the only string ID that identifies the package ) So a fake import path is created according to the location of the directory _/hello
Let's use go mod init Initialize the folder to module Well !
go mod init demo.com/hello
go mod init Will write go.mod file
go.mod It will only appear in the root directory of the module . The subdirectory package import path under the module consists of the module path plus the subdirectory path . For example, there are subdirectories under the module /world, Then the import path is demo.com/hello/world
Add dependency
go Command by using go.mod Specific dependent module versions are listed in to resolve the import . When go.mod Unspecified time , Will automatically find the latest dependency , Add to go.mod
Except, of course, go.mod Beyond the direct dependencies listed in , There are also some indirect dependencies . for instance rsc.io/quote This module also relies on rsc.io/sampler, that rsc.io/sampler Will also download
It can be done by
go list -m allList all dependencies of the current module
Besides ,go.sum Also record encrypted hash values that depend on the module version . but go.sum Not at all package-lock.json, Only all direct and indirect dependencies of the current module will be recorded , And checksums .
Upgrade dependency
We can go through go get To upgrade to the latest dependent version .
But sometimes there are incompatibilities
$ 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
$
At this point, you can list all modules available tagged edition , Then select a compatible version to download
$ 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]
Delete dependency
go mod tidy Will clear these unused dependencies
Add dependent major version
Suppose we want to use multiple different master versions of a dependency
package hello
import (
"rsc.io/quote"
quoteV3 "rsc.io/quote/v3"
)
func Hello() string {
return quote.Hello()
}
func Proverb() string {
return quoteV3.Concurrency()
}
Go Each different version of the module uses a different module path .
replace Replace require Declaration of dependency
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/
边栏推荐
- After unplugging the network cable, does the original TCP connection still exist?
- C # use gdi+ to add text with center rotation (arbitrary angle)
- Write a jison parser from scratch (4/10): detailed explanation of the syntax format of the jison parser generator
- 什么是uid?什么是Auth?什么是验证器?
- 《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(四)
- 2022-2028 global industry research and trend analysis report on anterior segment and fundus OTC detectors
- GoLand environment variable configuration
- C语言指针经典面试题——第一弹
- Fatal error in golang: concurrent map writes
- 26. Delete duplicates in the ordered array (fast and slow pointer de duplication)
猜你喜欢

技术管理进阶——如何设计并跟进不同层级同学的绩效

2022-2028 global gasket plate heat exchanger industry research and trend analysis report

QTreeView+自定义Model实现示例

Regular expression (I)

libmysqlclient.so.20: cannot open shared object file: No such file or directory

C语言指针面试题——第二弹

26. Delete duplicates in the ordered array (fast and slow pointer de duplication)

C # use gdi+ to add text with center rotation (arbitrary angle)

Kubernetes CNI 插件之Fabric

2022-2028 research and trend analysis report on the global edible essence industry
随机推荐
Flutter 小技巧之 ListView 和 PageView 的各种花式嵌套
Write a jison parser from scratch (4/10): detailed explanation of the syntax format of the jison parser generator
Launpad | 基礎知識
Golang defer
Multilingual Wikipedia website source code development part II
How do microservices aggregate API documents? This wave of show~
Write a jison parser (7/10) from scratch: the iterative development process of the parser generator 'parser generator'
Daughter love: frequency spectrum analysis of a piece of music
IIS configure FTP website
浅谈Multus CNI
Leetcode (Sword finger offer) - 35 Replication of complex linked list
【leetcode】540. A single element in an ordered array
Lauchpad X | 模式
Four common methods of copying object attributes (summarize the highest efficiency)
Basic data types in golang
Investment analysis and prospect prediction report of global and Chinese high purity tin oxide Market Ⓞ 2022 ~ 2027
How to ensure the uniqueness of ID in distributed environment
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
Get the source code in the mask with the help of shims
2022-2028 global gasket plate heat exchanger industry research and trend analysis report