• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go命令官方指南【原译】

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

启动错误报告
编译包和依赖项
删除目标文件和缓存的文件
显示包或符号的文档
打印Go环境信息
更新包以使用新API
Gofmt(重新格式化)包源
通过处理源生成Go文件
下载并安装包和依赖项
编译并安装包和依赖项
列出包或模块
模块维护
将模块下载到本地缓存
从工具或脚本编辑go.mod
打印模块要求图
在当前目录中初始化新模块
添加缺失并删除未使用的模块
制作依赖项的销售副本
验证依赖项是否具有预期内容
解释为什么需要包或模块
编译并运行Go程序
测试包
运行指定的go工具
打印Go版本
报告包中可能出现的错误
构建模式
在Go和C之间调用
构建和测试缓存
环境变量
文件类型
go.mod文件
GOPATH环境变量
GOPATH和模块
内部目录
供应商目录
模块代理协议
导入路径语法
相对导入路径
远程导入路径
导入路径检查
模块,模块版本等
初步模块支持
定义一个模块
主模块和构建列表
维护模块要求
伪版本
模块查询
模块兼容性和语义版本控制
模块代码布局
模块下载和验证
模块和销售
模块感知go get
包列表和模式
测试标志
测试功能
子目录

Go是一个管理Go源代码的工具。

用法:

go <command> [参数]

命令是:

bug  启动错误报告
build  编译包和依赖关系
clean  删除目标文件和缓存文件
doc  显示包或符号
env  打印文档Go环境信息
fix  更新包以使用新API 
fmt  gofmt(重新格式化)包源
generate  通过源代码生成Go文件 获取下载并安装包和依赖项 安装编译和安装包和依赖项 列表列表包或模块 mod模块维护 运行编译运行Go程序 测试测试包 工具运行指定go工具 版本打印Go版本 兽医报告可能在包中出错

 

有关命令的更多信息,请使用“go help <command>”。

其他帮助主题:

buildmode   build modes
c           calling between Go and C
cache       build and test caching
environment environment variables
filetype    file types
go.mod      the go.mod file
gopath      GOPATH environment variable
gopath-get  legacy GOPATH go get
goproxy     module proxy protocol
importpath  import path syntax
modules     modules, module versions, and more
module-get  module-aware go get
packages    package lists and patterns
testflag    testing flags
testfunc    testing functions

 

有关该主题的更多信息,请使用“go help <topic>”。

启动错误报告

用法:

go bug

Bug打开默认浏览器并启动新的错误报告。该报告包含有用的系统信息。

编译包和依赖项

用法:

go build [-o output] [-i] [build flags] [packages]

Build会编译导入路径命名的包及其依赖项,但不会安装结果。

如果构建的参数是.go文件的列表,则build会将它们视为指定单个包的源文件列表。

编译单个主程序包时,build会将生成的可执行文件写入以第一个源文件命名的输出文件('go build ed.go rx.go'write'ed'或'ed.exe')或源代码目录( 'go build unix / sam'写'sam'或'sam.exe')。编写Windows可执行文件时会添加“.exe”后缀。

在编译多个包或单个非主包时,build会编译包但丢弃生成的对象,仅用于检查是否可以构建包。

编译包时,构建会忽略以“_test.go”结尾的文件。

-o标志仅在编译单个包时允许,强制构建将结果可执行文件或对象写入命名输出文件,而不是最后两段中描述的默认行为。

-i标志安装作为目标依赖项的软件包。

构建标志由构建,清理,获取,安装,列表,运行和测试命令共享:

-a 
	强制重建已经是最新的软件包。
-n 
	打印命令但不运行它们。
-pn 
	可以并行运行
	的程序数,例如构建命令或测试二进制文件。
	默认值是可用的CPU数。
-race 
	启用数据竞争检测。
	仅支持linux / amd64,freebsd / amd64,darwin / amd64和windows / amd64。
-msan 
	支持与内存清理程序的互操作。
	仅支持在linux / amd64,linux / arm64上,
	并且仅支持Clang / LLVM作为主机C编译器。
-v 
	在编译时打印包的名称。
-work
	打印临时工作目录的名称,
	退出时不要删除它。
-x 
	打印命令。

-asmflags '[pattern =] arg list' 
	传递每个go工具asm调用的参数。
-buildmode mode
	构建模式使用。有关更多信息,请参阅“go help buildmode”。
-compiler 
	要使用的编译器名称,如runtime.Compiler(gccgo或gc)。
-gccgoflags '[pattern =] arg list' 
	传递每个gccgo编译器/链接器调用的参数。
-gcflags '[pattern =] arg list' 
	传递每个go工具编译调用的参数。
-installsuffix suffix
	在软件包安装目录的名称中使用后缀,
	为了使输出与默认构建分开。
	如果使用-race标志,则安装后缀会自动设置为race,
	或者,如果明确设置,则会附加_race。同样对于-msan 
	标志。使用需要非默认编译标志的-buildmode选项
	具有类似的效果。
-ldflags '[pattern =] arg list' 
	传递每个go工具链接调用的参数。
-linkshared 
	链接以前使用
	-buildmode = shared 创建的共享库
-mod mode
	模块下载模式使用:readonly或vendor。
	有关更多信息,请参阅“go help modules”。
-pkgdir dir dir 安装并加载所有包,而不是通常的位置。
	例如,
	使用非标准配置构建时,请使用-pkgdir将生成的包保留在单独的位置。
-tags '标记列表' 构建期间要考虑满足以空格分隔的构建标记列表有关构建标记的更多信息,请参阅
	go / build包文档中构建约束说明
-toolexec 'cmd args' 
	用于调用vet和asm等工具链程序的程序。
	例如,go命令不是运行asm,而是运行
	'cmd args / path / to / asm <asm>的参数'。

-asmflags,-gccgoflags,-gcflags和-ldflags标志接受以空格分隔的参数列表,以在构建期间传递给基础工具。要在列表中的元素中嵌入空格,请使用单引号或双引号将其括起来。参数列表可以在包模式和等号之后,这限制了该参数列表的使用以构建匹配该模式的包(有关包模式的描述,请参阅'go help packages')。如果没有模式,参数列表仅适用于命令行上指定的包。可以用不同的模式重复标志,以便为不同的包组指定不同的参数。如果包与多个标志中给出的模式匹配,则命令行上的最新匹配将获胜。例如,'go build -gcflags = -S fmt'

有关指定包的更多信息,请参阅“go help packages”。有关安装包和二进制文件的更多信息,请运行'go help gopath'。有关在Go和C / C ++之间调用的更多信息,请运行'go help c'。

注意:Build遵守某些约定,例如'go help gopath'所描述的约定。但是,并非所有项目都遵循这些惯例。具有自己的约定或使用单独的软件构建系统的安装可以选择使用较低级别的调用,例如“go tool compile”和“go tool link”,以避免构建工具的一些开销和设计决策。

另见:go install,go get,go clean。

删除目标文件和缓存的文件

用法:

go clean [clean flags] [build flags] [packages]

 

Clean从包源目录中删除目标文件。go命令在临时目录中构建大多数对象,因此go clean主要关注其他工具留下的目标文件或go build的手动调用。

具体来说,clean从与导入路径对应的每个源目录中删除以下文件:

_obj/            old object directory, left from Makefiles
_test/           old test directory, left from Makefiles
_testmain.go     old gotest file, left from Makefiles
test.out         old test log, left from Makefiles
build.out        old test log, left from Makefiles
*.[568ao]        object files, left from Makefiles

DIR(.exe)        from go build
DIR.test(.exe)   from go test -c
MAINFILE(.exe)   from go build MAINFILE.go
*.so             from SWIG

 

在列表中,DIR表示目录的最终路径元素,MAINFILE是构建程序包时未包含的目录中任何Go源文件的基本名称。

-i标志导致clean删除相应的已安装存档或二进制文件('install install'将创建什么)。

-n标志导致clean打印它将执行的remove命令,但不运行它们。

-r标志使clean以递归方式应用于导入路径命名的包的所有依赖项。

-x标志导致clean在执行它们时打印remove命令。

-cache标志导致clean删除整个go构建缓存。

-testcache标志导致clean使go构建缓存中的所有测试结果失效。

-modcache标志导致clean删除整个模块下载缓存,包括版本化依赖项的解压缩源代码。

有关构建标志的更多信息,请参阅“go help build”。

有关指定包的更多信息,请参阅“go help packages”。

显示包或符号的文档

用法:

go doc [-u] [-c] [package | [package.] symbol [.methodOrField]]

Doc打印与其参数(包,const,func,类型,var,方法或结构字段)标识的项目相关联的文档注释,然后是每个“下”的第一级项的一行摘要。 item(包的包级声明,类型的方法等)。

Doc接受零个,一个或两个参数。

没有参数,也就是说,当运行时

go doc

 

它在当前目录中打印包的包文档。如果包是一个命令(包main),除非提供-cmd标志,否则将从表示中删除包的导出符号。

当使用一个参数运行时,该参数被视为要记录的项的类似Go语法的表示。参数选择取决于GOROOT和GOPATH中安装的内容,以及参数的形式,其中示意性之一:

go doc <pkg>
go doc <sym>[.<methodOrField>]
go doc [<pkg>.]<sym>[.<methodOrField>]
go doc [<pkg>.][<sym>.]<methodOrField>

 

此参数列表中与参数匹配的第一个项目是打印其文档的项目。(请参阅下面的示例。)但是,如果参数以大写字母开头,则假定它标识当前目录中的符号或方法。

对于包,扫描的顺序是以广度优先顺序词汇确定的。也就是说,所呈现的包是与搜索匹配的包,并且最接近根并且词法上首先在其层级的级别。在GOPATH之前,GOROOT树总是被完整扫描。

如果没有指定或匹配包,则选择当前目录中的包,因此“go doc Foo”显示当前包中符号Foo的文档。

包路径必须是合格路径或路径的正确后缀。go工具的常用包机制不适用:包路径元素之类的。和...不是由go doc实现的。

当使用两个参数运行时,第一个必须是完整的包路径(不仅仅是后缀),第二个是符号,或带有方法或结构字段的符号。这类似于godoc接受的语法:

go doc <pkg> <sym>[.<methodOrField>]

 

在所有形式中,当匹配符号时,参数中的小写字母与两种情况匹配,但大写字母完全匹配。这意味着如果不同的符号具有不同的情况,则包中可能存在小写参数的多个匹配。如果发生这种情况,则打印所有匹配的文档。

例子:

go doc
    Show documentation for current package.
go doc Foo
    Show documentation for Foo in the current package.
    (Foo starts with a capital letter so it cannot match
    a package path.)
go doc encoding/json
    Show documentation for the encoding/json package.
go doc json
    Shorthand for encoding/json.
go doc json.Number (or go doc json.number)
    Show documentation and method summary for json.Number.
go doc json.Number.Int64 (or go doc json.number.int64)
    Show documentation for json.Number's Int64 method.
go doc cmd/doc
    Show package docs for the doc command.
go doc -cmd cmd/doc
    Show package docs and exported symbols within the doc command.
go doc template.new
    Show documentation for html/template's New function.
    (html/template is lexically before text/template)
go doc text/template.new # One argument
    Show documentation for text/template's New function.
go doc text/template new # Two arguments
    Show documentation for text/template's New function.

At least in the current tree, these invocations all print the
documentation for json.Decoder's Decode method:

go doc json.Decoder.Decode
go doc json.decoder.decode
go doc json.decode
cd go/src/encoding/json; go doc decode

 

标志:

-all 
	显示包的所有文档。
-c 
	在匹配符号时尊重大小写。
-cmd 
	将命令(包main)视为常规包。
	否则,
	在显示程序包的顶级文档时,将隐藏程序包主导出的符号
-src 
	显示符号的完整源代码。这将
	显示其声明和
	定义的完整Go源,例如函数定义(包括
	正文),类型声明或封闭const 
	块。因此输出可能包括未导出的
	细节。
-u 
	显示未导出的
	符号,方法和字段的文档

打印Go环境信息

用法:

go env [-json] [var ...]

Env打印Go环境信息。

默认情况下,env将信息打印为shell脚本(在Windows上,即批处理文件)。如果给出一个或多个变量名作为参数,则env在其自己的行上打印每个命名变量的值。

-json标志以JSON格式而不是shell脚本打印环境。

有关环境变量的更多信息,请参阅“go help environment”。

更新包以使用新API

用法:

go fix [packages]

 

Fix在导入路径命名的包上运行Go fix命令。

有关修复的更多信息,请参阅“go doc cmd / fix”。有关指定包的更多信息,请参阅“go help packages”。

要使用特定选项运行修复,请运行“go tool fix”。

另见:go fmt,go vet。

Gofmt(重新格式化)包源

用法:

go fmt [-n] [-x] [packages]

 

Fmt在导入路径命名的包上运行命令'gofmt -l -w'。它打印修改的文件的名称。

有关gofmt的更多信息,请参阅“go doc cmd / gofmt”。有关指定包的更多信息,请参阅“go help packages”。

-n标志打印将要执行的命令。-x标志在执行时打印命令。

要使用特定选项运行gofmt,请运行gofmt本身。

另见:go fix,go vet。

通过处理源生成Go文件

用法:

go generate [-run regexp] [-n] [-v] [-x] [build flags] [file.go ... | 包]

生成由现有文件中的指令描述的运行命令。这些命令可以运行任何进程,但目的是创建或更新Go源文件。

Go generate永远不会通过go build,go get,go test等自动运行。它必须明确运行。

Go生成扫描文件中的指令,这些指令是表单的行,

// go:生成命令参数...

(注意:“// go”中没有前导空格和空格)其中command是要运行的生成器,对应于可以在本地运行的可执行文件。它必须位于shell路径(gofmt),完全限定的路径(/ usr / you / bin / mytool)或命令别名中,如下所述。

为了向人类和机器工具传达生成代码,生成的源应该具有与以下正则表达式匹配的行(在Go语法中):

^ //生成代码。*不要编辑\。$

该行可能出现在文件的任何位置,但通常位于开头附近,因此很容易找到。

请注意,go generate不会解析文件,因此看起来像注释或多行字符串中的指令的行将被视为指令。

该指令的参数是空格分隔的标记或双引号字符串,它们在运行时作为单独的参数传递给生成器。

带引号的字符串使用Go语法并在执行之前进行评估; 带引号的字符串作为生成器的单个参数出现。

Go运行生成器时生成几个变量:

$GOARCH 
	执行架构(arm,amd64等)
$GOOS 
	执行操作系统(linux,windows等)
$GOFILE 
	文件的基本名称。
$GOLINE 
	源文件中指令的行号。
$GOPACKAGE 
	包含指令的文件包的名称。
$DOLLAR 
	美元符号。

除了变量替换和引用字符串评估之外,在命令行上不执行诸如“globbing”之类的特殊处理。

作为运行命令之前的最后一步,任何具有字母数字名称的环境变量(例如$ GOFILE或$ HOME)的调用都将在整个命令行中进行扩展。变量扩展的语法是所有操作系统上的$ NAME。由于评估的顺序,变量甚至在引用的字符串内扩展。如果未设置变量NAME,则$ NAME将扩展为空字符串。

表格的指示,

// go:generate -command xxx args ...

仅为此源文件的剩余部分指定字符串xxx表示由参数标识的命令。这可用于创建别名或处理多字生成器。例如,

// go:generate -command foo go tool foo

指定命令“foo”表示生成器“go tool foo”。

按命令行上给出的顺序生成进程包,一次一个。如果命令行列出.go文件,则将它们视为单个包。在包中,按文件名顺序生成处理包中的源文件,一次一个。在源文件中,按照它们在文件中出现的顺序生成运行生成器,一次一个。

如果任何生成器返回错误退出状态,“go generate”将跳过该包的所有进一步处理。

生成器在包的源目录中运行。

Go generate接受一个特定的标志:

-run=""
	如果非空,则指定正则表达式以选择
	其完整原始源文本(不包括
	任何尾随空格和最终换行符)与
	表达式匹配的指令

它还接受标准构建标志,包括-v,-n和-x。-v标志在处理包时打印包和文件的名称。-n标志打印将要执行的命令。-x标志在执行时打印命令。

有关构建标志的更多信息,请参阅“go help build”。

有关指定包的更多信息,请参阅“go help packages”。

下载并安装包和依赖项

用法:

go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages]

获取导入路径指定的包及其依赖项的下载。然后安装命名包,比如'go install'。

-d标志指示在下载软件包后停止; 也就是说,它指示不安装软件包。

-f标志仅在设置-u时有效,强制get -u不验证每个包是否已从其导入路径隐含的源控制存储库中检出。如果源是原始的本地分支,这可能很有用。

-fix标志指示get在解析依赖项或构建代码之前在下载的包上运行修复工具。

-insecure标志允许从存储库中提取并使用不安全的方案(如HTTP)解析自定义域。谨慎使用。

-t标志指示get还下载构建指定包的测试所需的包。

-u标志指示get使用网络更新命名包及其依赖项。默认情况下,get使用网络检出丢失的包,但不使用它来查找现有包的更新。

-v标志启用详细进度和调试输出。

Get还接受构建标志来控制安装。请参阅'go help build'。

签出新包时,get创建目标目录GOPATH / src / <import-path>。如果GOPATH包含多个条目,则get使用第一个条目。有关详细信息,请参阅:'go help gopath'。

签出或更新包时,查找与本地安装的Go版本匹配的分支或标记。最重要的规则是,如果本地安装运行版本为“go1”,则搜索名为“go1”的分支或标记。如果不存在此类版本,则会检索包的默认分支。

当获取签出或更新Git存储库时,它还会更新存储库引用的任何git子模块。

永远不会检出或更新存储在供应商目录中的代码。

有关指定包的更多信息,请参阅“go help packages”。

有关“go get”如何找到要下载的源代码的更多信息,请参阅“go help importpath”。

本文描述了使用GOPATH管理源代码和依赖项时get的行为。如果go命令在模块感知模式下运行,则get的标志和效果的细节会发生变化,就像'go help get'一样。请参阅“go help modules”和“go help module-get”。

另见:go build,go install,go clean。

编译并安装包和依赖项

用法:

go install [-i] [build flags] [packages]

安装编译并安装导入路径命名的包。

-i标志也会安装命名包的依赖项。

有关构建标志的更多信息,请参阅“go help build”。有关指定包的更多信息,请参阅“go help packages”。

另见:go build,go get,go clean。

列出包或模块

用法:

go list [-f format] [-json] [-m] [list flags] [build flags] [packages]

列表列出了命名包,每行一个。最常用的标志是-f和-json,它们控制为每个包打印的输出形式。下面记录的其他列表标志控制更具体的细节。

默认输出显示包导入路径:

bytes
encoding/json
github.com/gorilla/mux
golang.org/x/net/html

 

-f标志使用包模板的语法指定列表的备用格式。默认输出等效于-f'{{。ImmortPath}}'。传递给模板的结构是:

type Package struct {
    Dir           string   // directory containing package sources
    ImportPath    string   // import path of package in dir
    ImportComment string   // path in import comment on package statement
    Name          string   // package name
    Doc           string   // package documentation string
    Target        string   // install path
    Shlib         string   // the shared library that contains this package (only set when -linkshared)
    Goroot        bool     // is this package in the Go root?
    Standard      bool     // is this package part of the standard Go library?
    Stale         bool     // would 'go install' do anything for this package?
    StaleReason   string   // explanation for Stale==true
    Root          string   // Go root or Go path dir containing this package
    ConflictDir   string   // this directory shadows Dir in $GOPATH
    BinaryOnly    bool     // binary-only package: cannot be recompiled from sources
    ForTest       string   // package is only for use in named test
    Export        string   // file containing export data (when using -export)
    Module        *Module  // info about package's containing module, if any (can be nil)
    Match         []string // command-line patterns matching this package
    DepOnly       bool     // package is only a dependency, not explicitly listed

    // Source files
    GoFiles         []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles)
    CgoFiles        []string // .go source files that import "C"
    CompiledGoFiles []string // .go files presented to compiler (when using -compiled)
    IgnoredGoFiles  []string // .go source files ignored due to build constraints
    CFiles          []string // .c source files
    CXXFiles        []string // .cc, .cxx and .cpp source files
    MFiles          []string // .m source files
    HFiles          []string // .h, .hh, .hpp and .hxx source files
    FFiles          []string // .f, .F, .for and .f90 Fortran source files
    SFiles          []string // .s source files
    SwigFiles       []string // .swig files
    SwigCXXFiles    []string // .swigcxx files
    SysoFiles       []string // .syso object files to add to archive
    TestGoFiles     []string // _test.go files in package
    XTestGoFiles    []string // _test.go files outside package

    // Cgo directives
    CgoCFLAGS    []string // cgo: flags for C compiler
    CgoCPPFLAGS  []string // cgo: flags for C preprocessor
    CgoCXXFLAGS  []string // cgo: flags for C++ compiler
    CgoFFLAGS    []string // cgo: flags for Fortran compiler
    CgoLDFLAGS   []string // cgo: flags for linker
    CgoPkgConfig []string // cgo: pkg-config names

    // Dependency information
    Imports      []string          // import paths used by this package
    ImportMap    map[string]string // map from source import to ImportPath (identity entries omitted)
    Deps         []string          // all (recursively) imported dependencies
    TestImports  []string          // imports from TestGoFiles
    XTestImports []string          // imports from XTestGoFiles

    // Error information
    Incomplete bool            // this package or a dependency has an error
    Error      *PackageError   // error loading package
    DepsErrors []*PackageError // errors loading dependencies
}

 

存储在供应商目录中的包报告ImportPath,其中包含供应商目录的路径(例如,“d / vendor / p”而不是“p”),以便ImportPath唯一地标识包的给定副本。Imports,Deps,TestImports和XTestImports列表还包含这些扩展的导入路径。有关vendoring的更多信息,请参阅golang.org/s/go15vendor。

错误信息(如果有)是

type PackageError struct {
    ImportStack   []string // shortest path from package named on command line to this one
    Pos           string   // position of error (if present, file:line:col)
    Err           string   // the error itself
}

 

模块信息是Module结构,在下面列表-m的讨论中定义。

模板函数“join”调用strings.Join。

模板函数“context”返回构建上下文,定义如下:

type Context struct {
    GOARCH        string   // target architecture
    GOOS          string   // target operating system
    GOROOT        string   // Go root
    GOPATH        string   // Go path
    CgoEnabled    bool     // whether cgo can be used
    UseAllFiles   bool     // use files regardless of +build lines, file names
    Compiler      string   // compiler to assume when computing target paths
    BuildTags     []string // build constraints to match in +build lines
    ReleaseTags   []string // releases the current release is compatible with
    InstallSuffix string   // suffix to use in the name of the install dir
}

 

有关这些字段含义的更多信息,请参阅go / build包的Context类型的文档。

-json标志使包数据以JSON格式打印,而不是使用模板格式。

-compiled标志导致list将CompiledGoFiles设置为呈现给编译器的Go源文件。通常,这意味着它会重复GoFiles中列出的文件,然后还会添加通过处理CgoFiles和SwigFiles生成的Go代码。Imports列表包含来自GoFiles和CompiledGoFiles的所有导入的并集。

-deps标志使列表不仅迭代命名包而且迭代所有依赖关系。它在深度优先的后序遍历中访问它们,以便仅在所有依赖项之后列出包。未在命令行中明确列出的包将DepOnly字段设置为true。

-e标志更改错误包的处理,无法找到或错误的包。默认情况下,list命令会为每个错误的包打印一个错误标准错误,并在通常的打印过程中省略所考虑的包。使用-e标志,list命令永远不会将错误打印到标准错误,而是使用通常的打印处理错误的包。错误的包将具有非空的ImportPath和非零错误字段; 其他信息可能会或可能不会丢失(归零)。

-export标志使列表将Export字段设置为包含给定包的最新导出信息的文件的名称。

-find标志使列表标识命名包但不解析它们的依赖关系:Imports和Deps列表将为空。

-test标志使列表不仅报告命名包而且报告测试二进制文件(对于带有测试的包),以准确地向源代码分析工具传达测试二进制文件的构造方式。报告的测试二进制文件的导入路径是包的导入路径,后跟“.test”后缀,如“math / rand.test”。在构建测试时,有时需要专门为该测试重建某些依赖项(最常见的是测试包本身)。报告的针对特定测试二进制文件重新编译的包的导入路径后跟一个空格和括号中的测试二进制文件的名称,如“math / rand [math / rand.test]”或“regexp [sort.test] ”。ForTest字段也设置为正在测试的包的名称(“math / rand”或“sort”

Dir,Target,Shlib,Root,ConflictDir和Export文件路径都是绝对路径。

默认情况下,列表GoFiles,CgoFiles等保存Dir中的文件名(即相对于Dir的路径,而不是绝对路径)。使用-compiled和-test标志时添加的生成文件是引用生成的Go源文件的缓存副本的绝对路径。虽然它们是Go源文件,但路径可能不会以“.go”结尾。

-m标志使列表列出模块而不是包。

列出模块时,-f标志仍指定应用于Go结构的格式模板,但现在是Module结构:

type Module struct {
    Path     string       // module path
    Version  string       // module version
    Versions []string     // available module versions (with -versions)
    Replace  *Module      // replaced by this module
    Time     *time.Time   // time version was created
    Update   *Module      // available update, if any (with -u)
    Main     bool         // is this the main module?
    Indirect bool         // is this module only an indirect dependency of main module?
    Dir      string       // directory holding files for this module, if any
    GoMod    string       // path to go.mod file for this module, if any
    Error    *ModuleError // error loading module
}

type ModuleError struct {
    Err string // the error itself
}

 

默认输出是打印模块路径,然后打印有关版本和替换的信息(如果有)。例如,'go list -m all'可能会打印:

my / main / module 
golang.org/x/text v0.3.0 => / tmp / text 
rsc.io/pdf v0.1.1

Module结构有一个String方法,用于格式化这一行输出,因此默认格式等同于-f'{{。String}}'。

请注意,更换模块后,其“替换”字段描述替换模块,其“目录”字段设置为替换的源代码(如果存在)。(也就是说,如果Replace为非nil,则Dir设置为Replace.Dir,无法访问替换的源代码。)

-u标志添加有关可用升级的信息。当给定模块的最新版本比当前模块更新时,列表-u将Module的Update字段设置为有关较新模块的信息。Module的String方法通过在当前版本之后格式化括号中的较新版本来指示可用的升级。例如,'go list -m -u all'可能会打印:

my / main / module 
golang.org/x/text v0.3.0 [v0.4.0] => / tmp / text 
rsc.io/pdf v0.1.1 [v0.1.2]

(对于工具,'go list -m -u -json all'可能更方便解析。)

-versions标志导致list将Module的Versions字段设置为该模块的所有已知版本的列表,按照语义版本排序,最早到最新。该标志还更改默认输出格式以显示模块路径,后跟空格分隔的版本列表。

list -m的参数被解释为模块列表,而不是包。主模块是包含当前目录的模块。活动模块是主模块及其依赖项。没有参数,list -m显示主模块。使用参数,list -m显示参数指定的模块。任何活动模块都可以通过其模块路径指定。特殊模式“all”指定所有活动模块,首先是主模块,然后是依赖于模块路径的依赖项。包含“...”的模式指定模块路径与模式匹配的活动模块。表单路径@ version的查询指定该查询的结果,该查询不限于活动模块。有关模块查询的更多信息,请参阅“go help modules”。

模板函数“module”采用单个字符串参数,该参数必须是模块路径或查询,并将指定的模块作为Module结构返回。如果发生错误,结果将是具有非零错误字段的Module结构。

有关构建标志的更多信息,请参阅“go help build”。

有关指定包的更多信息,请参阅“go help packages”。

有关模块的更多信息,请参阅“go help modules”。

模块维护

Go mod提供对模块操作的访问。

请注意,对所有go命令都内置了对模块的支持,而不仅仅是'go mod'。例如,应使用“go get”来完成依赖项的日常添加,删除,升级和降级。有关模块功能的概述,请参阅“go help modules”。

用法:

go mod <command> [arguments]

命令是:

download    download modules to local cache
edit        edit go.mod from tools or scripts
graph       print module requirement graph
init        initialize new module in current directory
tidy        add missing and remove unused modules
vendor      make vendored copy of dependencies
verify      verify dependencies have expected content
why         explain why packages or modules are needed

 

有关命令的更多信息,请使用“go help mod <command>”。

将模块下载到本地缓存

用法:

go mod download [-json] [modules]

 

下载下载命名模块,可以是模块模式选择主模块的依赖关系或模板路径@版本的模块查询。没有参数,下载适用于主模块的所有依赖项。

go命令将在普通执行期间根据需要自动下载模块。“go mod download”命令主要用于预填充本地缓存或计算Go模块代理的答案。

默认情况下,下载会将错误报告为标准错误,否则将保持静默。-json标志导致下载将一系列JSON对象打印到标准输出,描述每个下载的模块(或失败),对应于此Go结构:

type Module struct {
    Path     string // module path
    Version  string // module version
    Error    string // error loading module
    Info     string // absolute path to cached .info file
    GoMod    string // absolute path to cached .mod file
    Zip      string // absolute path to cached .zip file
    Dir      string // absolute path to cached source root directory
    Sum      string // checksum for path, version (as in go.sum)
    GoModSum string // checksum for go.mod (as in go.sum)
}

 

有关模块查询的更多信息,请参阅“go help modules”。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
9.2Go文件IO操作发布时间:2022-07-10
下一篇:
gogin读取excel插入Mysql发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap