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