swagger-API文档生成器
## swagger-API文档生成器 `go install github.com/swaggo/swag/cmd/swag@latest` 安装swagger命令 安装gin-swagger `go get -u github.com/swaggo/gin-swagger` `go get -u github.com/swaggo/files` ```go import ( "github.com/gin-gonic/gin"
## swagger-API文档生成器 `go install github.com/swaggo/swag/cmd/swag@latest` 安装swagger命令 安装gin-swagger `go get -u github.com/swaggo/gin-swagger` `go get -u github.com/swaggo/files` ```go import ( "github.com/gin-gonic/gin"
## gin模板 ### 缺点 - 模板引擎不具备运算功能,需自己实现过滤函数 - 模板不能继承方法,只能使用导入 - 没有比较符,只有比较函数,参考下面的比较函数 - ### 多个页面的方法: 顶部header.html: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" conten
## MongoDB数据读写查 ### mongodb和其他sql不同的地方: - mongodb的表单叫做Collection(集), - 它没有严格的字段类型限制,甚至没有字段限制,可以容纳不同字段名,类型,结构,的数据在一个集 - 它没有关系映射,任何数据之间的联系操作都要手动编写代码去完成 - 它的唯一键值ID为对象,如果要记录对象需转为字符串 - 任何要操作某条数据时,如果知道键值ID,需要先转为对象 ## 示范 model
## gin 自己实现csrf令牌 ```go import ( "crypto/rand" "encoding/base64" "github.com/gin-gonic/gin" ) // 生成 CSRF Token,并将其保存在上下文中 func setCSRFToken() gin.HandlerFunc { return func(c *gin.Context) { b := make([]byte, 32)
## go语言基础 #go是静态类型语言,一旦变量被声明,它的类型就不可能被改变 #变量存在有效区域,例如在花括号内的范围,子括号继承父括号 `var bianliang = 10` #普通声明变量 `bianliang := 10` #短声明,和普通声明一样,只可以在函数内使用,但是可以在无法使用var方法的情况中使用 #需要注意的是,如果要和浮点数进行计算,那么一开始就要指定为浮点数: `var bianliang float6
## gin框架基础 #### 一个简易示范 ```go package router import ( "fmt" "github.com/gin-gonic/gin" //导入gin包 "github.com/gin-gonic/gin/binding" //自定义验证器需要 "github.com/go-playground/validator/v10" //导入自定义验证器 "
## go-redis数据库操作 ```go package models import ( "github.com/redis/go-redis/v9" "context" ) var RDB0 = Redis_init() //调用常量RDB0 func Redis_init() *redis.Client { client := redis.NewClient(&redis.Options{ Addr
## golang八股文 [toc] ## 进程、线程、协程 - 进程:资源分配和CPU调度的基本单位,是操作系统为一个应用程序分配的基本单位。每个进程都有自己独立的地址空间、内存、文件句柄等资源。操作系统通过进程来隔离不同的应用程序,确保它们之间不会互相干扰。 - 线程:CPU调度的基本单位,线程运行在进程上面,线程除了有一些自己的必要的堆栈空间之外,其它的资源都是共享的线程中的,共享的资源包括: 1. 线程ID 2
## go 生成sitemap.xml示范demo ```go package services import ( "encoding/xml" "fmt" "log" "os" "github.com/gin-gonic/gin" "time" model "btcinfo/models" "context" "math" //向上取整需要 "go.mongodb.org/mongo-driver/bson" )
## http包发起请求 ```go import ( "encoding/json" "io" "log" "net/http" "fmt" model "btcmai/models" "time" ) //普通的get请求 func getCnyHuiLv() { resp, err := http.Get("http://apilayer.net/api/live?access_k
## Gin-i18n国际化多语言 #### 前言 使用了国际化之后,模板中的文字就存放的都是以变量存在了,这会让结构完全变化,例如导航栏 页尾栏这种每个页面都可能需要的,为了不在每个路由都去传递这些数据,所以把导航栏和页尾很长的代码,直接放在全局变量中 首先因以英文为主体来生成其他翻译文件, 尽可能少存在复数(复数要额外处理不然翻译效果不好),能多用符号或者不用文字尽量少用 对动态内容,应使用数据库分类查询 mol ### 避
## gorm数据库操作 ##### 安装 `go get -u gorm.io/gorm` `go get -u gorm.io/driver/sqlite` sqlite官方驱动使用C实现,所以要在目标平台编译 `github.com/glebarez/sqlite` //如果要交叉编译可以使用纯go实现的sqlite ## 简易示范 在项目下创建/models/inti.go初始化gorm: ```go package mod