[TOC]
GOPATH
工作目录就是我们用来存放开发的源代码的地方,对应的就是Go里的GOPATH这个环境变量。这个环境变量指定之后,我们编译源代码等生成的文件都会放到这个目录下,GOPATH环境变量的配置参考golang环境搭建,配置到/etc/profile
或者Windows下的系统变量里。
前面我们在安装Go的时候看到需要设置GOPATH变量,Go从1.1版本到1.7必须设置这个变量,而且不能和Go的安装目录一样,这个目录用来存放Go源码,也就是Go的工作空间(workspace,GOPATH环境变量指向的目录),Go的可运行文件,以及相应的编译之后的包文件。所以这个目录下面有三个子目录:src、bin、pkg。从go 1.8开始,GOPATH环境变量现在有一个默认值,如果它没有被设置。 它在Unix上默认为$HOME/go,在Windows上默认为%USERPROFILE%/go。
这里对GO工作空间包含的三个目录作一个说明
- src :里面的每个子目录都是一个包。包内是Go的源码文件
- pkg :编译后生成的,包的目标文件
- bin :编译后生成的可执行文件
GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下。
代码目录结构规划
GOPATH下的src目录就是接下来开发程序的主要目录,所有的源码都是放在这个目录下面,那么一般我们的做法就是一个目录一个项目。
project1 // (project1添加到GOPATH目录了)
-- bin
-- pkg
-- src
-- models // package
-- controllers // package
-- main.go // package main[注意,本文所有main.go均指包main的入口函数main所在文件]
project2 // (project2添加到GOPATH目录了)
-- bin
-- pkg
-- src
-- models // package
-- controllers // package
-- main.go // package main
使用go build可以在src文件夹下编译生成名为“src”的可执行文件。这是golang默认约定。一般我个人不怎么用这个命令。因为它会生成可执行文件在src目录下面。
我一般用:go get 和 go install。