# Golang 公共项目

## Golang开发环境安装

### 安装

[此处](https://studygolang.com/dl) 下载安装

### 环境变量配置

**Windows**

在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:

```
GOROOT=C:\go
GOPATH=%USERPROFILE%\go
```

PATH环境变量末尾添加 %GOROOT%\bin

**MAC OS X**

> cd

> sudo vi .bash_profile

修改以下项目

```
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH="${GOROOT}/bin:${PATH}"
```

> source .bash_profile

更新配置


与Java、Python、NodeJS、PHP等均不同,只是开发环境需要安装用于代码编译,生产环境直接运行项目编译好的可执行文件即可,无需安装任何类似JRE、Python、v8、PHP的虚拟机或运行时环境!

执行以下操作前请理解并确认:
1. GOPATH 环境变量已配置,例如配置到用户目录下的go目录
2. GOPATH 目录是用于存放golang项目和其相关依赖的目录,所有golang项目代码都应该位于GOPATH目录中的src子目录下的包括代码托管地址、组织名、项目名在内的多级子目录下

## 获取项目
   
### 获取

> go get -v -insecure -d git.haoqitour.com/haoqi/go-common

参数:-v 显示详情,-insecure 非https版本仓库路径,-d 仅获取,不编译安装到GOPATH

可能会卡住或者报错,不用管,只要项目本身源代码文件获取下来了即可,文件保存位置即在上述GOPATH目录中的子目录里

**完成上述操作之后,以后日常开发都可以正常使用git命令来获取和提交此项目代码**

### 建立软连接

建立软连接的目的仅仅是为了方便找而已!

使用GoLand等开发工具时,仍然打开GOPATH里面的项目目录,而不是打开软连接位置的!

**Windows** 

Power Shell 或 Windows CMD (需要用管理员身份运行):

**注意,Windows Power Shell打开后首先输入cmd进入Windows CMD,下同不再累述**

> mklink /D %USERPROFILE%\Documents\project\haoqitour\go-common %GOPATH%\src\git.haoqitour.com\haoqi\go-common

**MAC OS X**

> sudo ln -s $GOPATH/src/git.haoqitour.com/haoqi/go-common/ ~/Documents/project/haoqitour/go-common

## 相关依赖

### Golang官方包

Golang运行时 >= 1.10.3

其他常用golang官方包,因为golang.org被墙,所以用以下步骤获取:

**Windows**

```cmd
git clone https://github.com/golang/net.git %GOPATH%\src\golang.org\x\net
git clone https://github.com/golang/text.git %GOPATH%\src\golang.org\x\text
git clone https://github.com/golang/tools.git %GOPATH%\src\golang.org\x\tools
git clone https://github.com/golang/sys.git %GOPATH%\src\golang.org\x\sys
git clone https://github.com/golang/crypto.git %GOPATH%\src\golang.org\x\crypto
cd %GOPATH%\src
go install golang.org\x\text
```

**MAC OS X**

```bash
git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net \
&& git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text \
&& git clone https://github.com/golang/tools.git $GOPATH/src/golang.org/x/tools \
&& git clone https://github.com/golang/sys.git $GOPATH/src/golang.org/x/sys \
&& git clone https://github.com/golang/crypto.git $GOPATH/src/golang.org/x/crypto \
&& cd $GOPATH/src/ \
&& go install golang.org/x/text
```

### 第三方包

如果有未下载的依赖包,进入项目目录,执行以下命令即可

> go get -v

本项目主要依赖包如下

[结构化日志logrus](https://github.com/Sirupsen/logrus)

[结构化日志logrus输出到graylog](https://gopkg.in/gemnasium/logrus-graylog-hook.v2)

[配置文件读取viper](https://github.com/spf13/viper)

[数据库ORM框架xorm](https://github.com/go-xorm/xorm)

默认的golang依赖库是全局的,如果希望各个项目各自管理自己的依赖,可以使用 [godep](https://github.com/tools/godep)