代码组织架构
- Go 的编程者通常都会将代码放在一个工作空间中.
- 在一个工作空间中包含着许多的版本控制的仓库(比如 git 等仓库)
- 每个仓库中包含着一个或者多个包
- 每个包都在一个目录中包含了一个或者多个 Go 源文件
- 一个包中目录的路径决定了
import path
注意: 这个确实是有别于其他的编程环境, 每个项目有着分别不同的工作空间.
工作空间长什么样呢?
工作空间是目录层次结构, 一个工作空间有两个目录在其根目录下:
src
包含 Go 的源代码bin
包含可执行命令
Go 工具编译和安装二进制都是往 bin
目录中.
src
子目录下通常包含多个版本控制仓库, 用来跟踪一个或者多个源码包的开发.
给个工作空间的例子:
GOPATH
环境变量
其实 GOPATH
就是指向了你的工作空间. 默认情况下是指向了一个家目录下的 go 目录.
如果想要在不同的位置工作, 就需要设置 GOPATH
来指向那个目录. 注意 ⚠️: GOPATH
一定不能是 Go 安装路径一样.
go env GOPATH
会打印出当前环境所配置的 GOPATH
; 如果没有设置, 那么就回打印默认值.
为了方便起见, 将工作空间的 bin
加入到 PATH
更好:
$ export PATH=$PATH:$GOPATH/bin
如果防止未设置 GOPATH
也能正常运行可以加上:
export GOPATH=$(go env GOPATH)
import
路径
import path
是一个唯一识别包的字符串. 包的导入路径和其在工作空间内或者在远程存储库中的位置相对应.
标准库中的软件包具有简短的导入路径, 比如"fmt"和"net/http". 对于自己的软件包, 必须选择一个基本路径, 这个基本路径不能与标准库或者需要使用的其他外部库冲突.
如果将源码存在一个源码库中的某个位置, 那么基本路径就应该使用这个仓库的根路径. 比如说, 如果你有一个 Github 账户在"github.com/user", 那么这个就应该是你的基本路径.
注意 ⚠️: 你并不需要在你可以编译之前上传代码到远端. 这只是一个好的习惯去组织你的代码以便于某一天上传. 实际中你可以选择任何路径名的. 只要区别于标准库并且长度大于 Go 的生态圈就行.
那么我们使用"github.com/user"作为基本路径, 创建一个保存源码的目录在工作空间中:
$ mkdir -p $GOPATH/src/github.com/user
第一个程序
要编译并运行一个简单程序, 请首先选择一个包路径(我们选择 github.com/user/hello), 然后在工作区中创建一个相应的包目录:
$ mkdir $GOPATH/src/github.com/user/hello
然后在这个目录下创建一个"hello.go"的文件, 写入:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于