wed pwd是啥意思


本文采用了一种沉浸式的、笔记式的或视频稿的风格,希望你会喜欢。需要注意的是,本文基于 go1.16 和 macOS 环境。为了通俗易通,文中某些描述可能不太严谨。

在 Go 项目中,首先需要清楚包(package)和模块(module)的概念。包是用来管理 .go 文件的,它是源代码的集合,由一个或多个源文件组成。一个目录最多只能有一个包,一个包也只能存在于一个目录。而模块是用来管理包的,它是包的集合,由零个或多个包组成。

接下来,文章介绍了两种模式:GOPATH mode(gopath模式)和 module mode(gomod模式)。在 gopath 模式下,需要设置 GO111MODULE 为 off,而 $GOPATH 默认为用户家目录下的 go 目录。包需要存放在 $GOPATH/src 的子目录中,导入路径则是相对于 $GOPATH/src 的路径。使用 go get 下载的包也是存放在 $GOPATH/src 目录中。

而在 gomod 模式下,模块目录可以是任何目录,包必须在某个模块中。模块路径需要在模块目录下的 go.mod 文件中使用 module 指令指定。使用 go get 下载的包存放在 $ GOPATH/pkg/mod 的相关目录中。

文章还提到了 GO111MODULE 配置还有一个值是 auto,意思是具体使用哪一种模式由 go 来判断并决定。为了避免不确定的效果,建议在使用 go 之前明确设置 GO111MODULE 的值为 off 或者 on。

值得注意的是,gopath 模式基本废弃,不建议再使用。如果有老项目仍在使用,建议迁移到 gomod 模式。而 gomod 模式相对于 gopath 模式来说较新,所以还有很多操作没有详细阐述。如果读者喜欢这种沉浸式的、笔记式的或视频稿的风格,后续可以再写关于 gopath 模式迁移到 gomod 模式的操作以及 gomod 模式下模块的常见管理操作。

文章提供了一些具体操作步骤和提示,如开启 gopath 模式或 gomod 模式,设置 GOPATH 和 GOPROXY,以及日常开发的示例。这些都有助于读者更好地理解和应用 Go 语言中的 GOPATH 和 Go Module。