[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 快捷鍵