包含标签 gin 的文章

使用 zap 替换 xorm 的日志系统

使用 zap 替换 xorm 的日志系统 zap 是 uber 开发的快速日志。 使用 https://github.com/yxlimo/xormzap 这个简易的适配器即可 代码如下: log.go 工具类 package util import "go.uber.org/zap" var logger *zap.Logger func Log() *zap.Logger { if logger != nil { return logger } g, _ := zap.NewProduction() logger = g return logger } func L() *zap.SugaredLogger { if logger != nil { return logger.Sugar() } return Log().Sugar() } repo.go 基于 xorm 的简陋封装 package repo import ( "fmt" _ "github.com/go-sql-driver/mysql" "github.com/yxlimo/xormzap" "xorm.io/xorm" "xorm.io/xorm/names" "yujinping.top/pams/util" ) var engine *xorm.Engine func Repo() *xorm.Engine { if engine != nil { return engine } var err error username := "root" password := "" host := "localhost" port := 3306 database……

阅读全文

go使用embed嵌入静态资源

第一步构建 vue project 可以创建一个简单的vue3 + vite 的项目。 编译时,需要将发布路径设置为 /public/ ,完成后,将 dist 文件夹移动到 go 项目的根文件夹。 嵌入资源文件 嵌入资源文件主要是使用 Go 1.16后增加的编译 //go:embed 预编译方式。 我使用的是 Go 1.18.3 版本。 修改 main.go package main import ( "embed" "io/fs" "net/http" ) // 注意 嵌入文件夹的时候,要使用 dist/** 形式告诉编……

阅读全文

go使用匿名结构体嵌入时警告

现象 使用gin + jwt-go 做jwt验证的时候,写下如下结构体 type CustomClaims struct { Name string `json:"name"` UserId string `json:"userId"` // StandardClaims结构体实现了Claims接口(Valid()函数) jwt.StandardClaims } 初始化结构体 func (c *LoginController) generateToken(user entity.User) (string, error) { // 构造SignKey: 签名和解签名需要使用一个值 j := helper.NewJWT() // 构造用户claims信息(负荷) claims := helper.CustomClaims{ user.RealName,……

阅读全文

go泛型简化数据库读取操作

前提 go 语言已经发布了 1.18 带有正式泛型的版本,但很多文章都仍旧只是限于官方的 Add(数学加减法) 泛型函数例子。因此本文尝试使用泛型来简化数据库操作这一个过程,深入了解及使用这个新版的泛型。当然其中的实现都以简单为主,当做使用泛型的可用例子。 注意本文使用 gorm 作为基础的数据库访问工具,当然……

阅读全文

go使用条件编译的形式集成swagger

安装 swag-go 的依赖 首先在项目根目录安装 swag-go 的依赖: go install github.com/go-openapi/swag 并在项目根目录执行生成 swagger 文档命令 swag init 在 routers 包内创建 swagger.go: //go:build doc // +build doc /** * 注意条件编译注释 //go:build doc 只能出现在代码文件的最顶部(这是Go 1.17的新的条件编译语法),不建议再使用//+build doc 旧的条件编译语法 */ package routers import ( \_ "demo/docs" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) func init() { swagHandler = ginSwagger.WrapHandler(swaggerFiles.Handler)……

阅读全文