[TOC]
## 注釋
~~~
// 單行注釋
/*
多行注釋
*/
~~~
## 變量常識
### 變量定義
> 語法:`var 變量名 變量類型`
```
// 定義一個int類型變量
var i int
// 定義多個bool類型變量,變量名之間使用逗號分隔
var c, python, java bool
```
### 變量初始化
> 定義變量的時候直接初始化:`var 變量名 變量類型 = 初始值`
```
// 定義變量i, 數據類型為int, 初始值為10
var i int = 10
// 定義多個int變量i和j, 并且i的初始值為1,j的初始值為2
var i, j int = 1, 2
// 不指定變量的類型,編譯器通過初始值的類型,自動推導出變量的類型
var i = 10
var c, python, java = true, false, "no!"
```
### 短變量聲明
> 語法:`變量名 := 初始值`
> 語法更加簡單,官方推薦使用該方式
```
s := "www.xx.com"
ok := false
```
## 數值類型
```
# 從8位到64整數
int int8 int16 int32 int64
# 無符號整數類型
uint uint8 uint16 uint32 uint64 uintptr
# byte 類型,是uint8的別名,占一個字節。
# 浮點數類型
float32 float64
```
> 綜合例子
```
var i int32 = 10
var j uint64 = 1000
var d float64 = 25.3
```
## 字符串類型
```
s := "hello world"
# 通過len函數獲取字符串長度
l := len(s)
# 字符串拼接
s2 := s + " world"
```
## bool類型
> 布爾類型,只有true和false兩種值
```
ok := true
```
## 零值
> 零值,也就是默認值,如果在go語言中,我們定義一個變量但是沒有給變量一個初始值,那么變量的零值如下:
> * 數值類型,默認值是0
> * 布爾值類型,默認值是false
> * 字符串類型,默認值是 ""
> * 結構體、map、切片,默認值是 nil
## 數據類型轉換
> go語言是強類型語言,如果一個變量是int類型,不能直接將int32類型的值賦值給int類型,必須要做類型轉換。
> 語法:`變量1 = 數據類型(變量2)`
```
var i int = 100
var j int64
// 將i轉換成int64類型
j = int64(i)
var d float64
// 將i轉換成float64類型
d = float64(i)
```
## 常量
> 常量就是一旦被定義,值就不能被改變。
```
const Pi = 3.14
const IP = "127.0.0.1"
//多重賦值1111
consta,b,c = 1,false,"str"
//多重賦值2222
const (
Female = 1
Male = 2
)
```
## 綜合例子
~~~
package main
// 導入fmt包
import "fmt"
// 在函數外面定義全局變量
var i int = 0
// 入口函數main
func main() {
// 給變量i賦值
i = 100
// 定義string變量
var s string
// 給變量s賦值
s = "hello"
// 打印變量值
fmt.Println(s)
// 短變量聲明用法
yes := false
str := "www.xxx.com"
code := 200
// 賦值
yes = true
str = "https://www.wk.com"
code = 301
// 打印變量值
fmt.Println(yes)
fmt.Println(str)
fmt.Println(code)
}
~~~
- 基礎知識
- 開發環境
- 包名規則
- 包初始化 (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 快捷鍵