[TOC]
## 下载安装包
> 官方下载地址:https://golang.google.cn/dl/
> 下载linux安装包:go1.13.1.linux-amd64.tar.gz
~~~
cd /usr/local/
tar zxvf go1.13.1.linux-amd64.tar.gz
~~~
## 配置环境变量
~~~
vim ~/.bash_profile
# 将文件内的PATH部分,增加 /usr/local/go/bin,如下
PATH=$PATH:$HOME/bin:/usr/local/go/bin
~~~
> 执行 `source ~/.bash_profile` 使其生效
## 配置国内镜像
~~~
# 启用 Go Modules 功能
go env -w GO111MODULE=on
# 配置镜像
go env -w GOPROXY=https://goproxy.cn
# 查看是否生效
go env | grep GOPROXY
~~~
## 工作空间 ($GOPATH)
> go语言安装好了后会自带GOPATH默认路径,可通过`go env`查看
```
.
├── bin // 可执行程序目录,我们编译的可执行程序会保存在这里
│ └── tour
├── pkg // 存放编译后生成的文件,一般我们很少操作这个目录
└── src // 我们的源码目录
├── github.com
├── go.uber.org
├── golang.org
├── google.golang.org
└── www.liwu4.com
```
## 安装第三方包 (go get)
> 开发的时候经常需要依赖很多第三方开发包,可使用如下安装包
```
// 安装gorm 数据库包
// 安装到 $GOPATH/src/github.com/jinzhu/gorm
go get github.com/jinzhu/gorm
```
> 安装好了后,通过import导入包,就可以在程序中使用了
## 运行程序 (go run)
> 平时开发调试的时候,都是通过go run 命令直接运行程序
```
// 切换到项目目录
cd $GOPATH/src/myproject
// 通过go run 命令,运行程序
go run main.go
```
## 构建程序 (go build)
> 通过go build命令,可以将源码编译成一个可执行文件,通常项目完成开发,需要打包发布到线上的时候才会构建程序
```
// 切换到项目目录
cd $GOPATH/src/myproject
// 构建程序:-o 指定可执行程序的名字,如果忽略该参数,则为项目目录名称
go build -o hello
```
> 构建成功后,会在当前目录生成一个hello可执行文件
```
// 直接运行程序
./hello
```
## 开发工具
> 目前go语言开发主流的开发工具就是goland
> 开发过程中,编辑器里的包报红无法联动的解决办法
~~~
# 创建mod文件
go mod init
~~~
> 然后再到goland的设置里找到 Go -> Go modules -> 勾选上 Enable Go modules integration
> windows安装环境参考
> https://www.cnblogs.com/kill/p/7831792.html
> 比如我的环境是使用docker里的golang。那么如何让windows下的goland开发环境下不显示红色的呢?
> 1. 需要本地安装go
> 2. 配置GOPATH环境,指定至项目目录,如`F:\docker_centos7\goproject`,由于该目录在docker里已经生成了对应的包文件,所以goland即可识别
- 基础知识
- 开发环境
- 包名规则
- 包初始化 (init)
- 基础数据类型
- 基础类型转换
- 格式化输出
- go指针
- 流程控制语句
- 函数定义
- 匿名函数
- 数组和切片
- map集合
- 结构体
- Interface接口
- 日期处理
- 数学计算
- 正则表达式
- 协程 (并发处理)
- channel
- waitgroup
- mutex (锁机制)
- websocket
- protobuf
- Redis
- 错误处理
- 打包程序
- NSQ消息队列
- 单元测试
- beego
- 安装入门
- Gin
- 快速入门
- 路由与控制器
- 处理请求参数
- 表单验证
- 处理响应结果
- 渲染HTML模版
- 访问静态文件
- Gin中间件
- Cookie处理
- Session处理
- Gin上传文件
- swagger
- pprof性能测试
- GORM
- 入门教程
- 模型定义
- 数据库连接
- 插入数据
- 查询数据
- 更新数据
- 删除数据
- 事务处理
- 关联查询
- 属于 (BELONG TO)
- 一对一 (Has One)
- 一对多 (Has Many)
- 多对多 (Many to Many)
- 预加载 (Preloading)
- 错误处理
- 第三方常用插件
- viper 读取配置文件
- zap 高性能日志
- Nginx代理配置
- Goland 快捷键