go语言基础-包、模块
2021/10/10 23:45:55
本文主要是介绍go语言基础-包、模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
go程序由多个包组成,包是同一目录下编译在一起的源文件的集合。在一个源文件中定义的函数、类型、变量和常量对同一包中的所有其他源文件可见。
一个存储库包含一个或多个模块。模块是一起发布的相关 Go 包的集合。 Go 存储库通常只包含一个模块,位于存储库的根目录。一个名为 go.mod 的文件声明了模块路径:模块中所有包的导入路径前缀。该模块在包含其 go.mod 文件的目录中包含包以及该目录的子目录,直到包含另一个 go.mod 文件(如果有)的下一个子目录。
每个模块的路径不仅用作其包的导入路径前缀,而且还指示 go 命令应该在哪里下载它。例如,为了下载模块 golang.org/x/tools,go 命令将查询 https://golang.org/x/tools 指示的存储库。
新建包
导入路径是用于导入包的字符串。包的导入路径是其模块路径与其在模块内的子目录相连。例如,模块 github.com/google/go-cmp 在目录 cmp/ 中包含一个包。该包的导入路径是 github.com/google/go-cmp/cmp。标准库中的包没有模块路径前缀。
设置GOBIN
go env -w GOBIN=/somewhere/else/bin
要取消设置先前由 go env -w 设置的变量,请使用 go env -u
新建模块
mkdir greetings
cd greetings
go mod init example.com/greetings
// 创建go.mod 用来追踪代码的依赖项。在代码中添加依赖项时,go.mod 文件将列出代码所依赖的版本,这使构建可重现以及控制要使用的模块版本。
// 添加本地依赖
go mod edit -replace example.com/greetings=../greetings
// 下载依赖
go mod tidy
模块依赖会自动下载到 GOPATH 环境变量指示的目录的 pkg/mod 子目录中。
// 删除所有下载的模块
go clean -modcache
安装模块
安装目录由 GOPATH 和 GOBIN 环境变量控制。如果设置了 GOBIN,二进制文件将安装到该目录。如果设置了 GOPATH,二进制文件将安装到 GOPATH 列表中第一个目录的 bin 子目录中。否则,二进制文件将安装到默认 GOPATH($HOME/go 或 %USERPROFILE%\go)的 bin 子目录中。
go install 模块路径
go install example/user/hello
go install .
// 模块目录内
go install
export PATH=$PATH:$(dirname $(go list -f '{{.Target}}' .))
将安装的模块添加到PATH中,方便执行
模块内建包
在模块内新建文件夹,然后编写go 文件,源码文件标识新的包名,然后执行go build 。
go build 不会产生输出文件。它将编译的包保存在本地构建缓存中。
然后使用go install 安装模块
这篇关于go语言基础-包、模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享