GORM中使用虚拟字段

作者:matrix 被围观: 1,220 次 发布时间:2023-11-30 分类:Golang | 无评论 »

使用gorm时,可能需要处理虚拟字段(不在数据库中实际存在的字段)的情况。可以使用结构体tag标签来支持 User结构体模型 type User struct { ID uint `gorm:"primaryKey;not null"` // 主键ID // 虚拟字段 Isvip int `gorm:"-;default:0"` // 是否vip 1是 0否 } 说明: IsVip字段被标记为 gorm:"-" ,表示虚拟字段。gorm在进行数据库操作(如查询、插入、更新等)时,将不会考虑此字段。同时,可以使用default ......

ShouldBindQuery获取GET参数默认值

作者:matrix 被围观: 1,280 次 发布时间:2023-10-31 分类:Golang | 一条评论 »

验证器结构体的form标签中设置default即可,仅测试ShouldBindQuery有效读取,其他绑定方法未知 验证器结构体 type UserListValidator struct { Type string `form:"type,default=RECOMMEND" binding:"omitempty,oneof=NEAR RECOMMEND" label:"列表类型"` //列表类型 NEAR:附近(默认) RECOMMEND:推荐 } 控制器方法 func (u *UserController) List(ctx *gin.Context) { validator := validators.UserListValidator{} if err ......

JSON Merge Patch 合并结构体字段数据

作者:matrix 被围观: 1,048 次 发布时间:2023-10-18 分类:Golang | 无评论 »

json Merge Patch,是一个Internet Engineering Task Force(IETF)标准。基本思想是,你有一个原始的JSON对象,然后根据提供的“补丁”JSON对象,最终生成原始JSON对象需要修改的结果。这种机制适用于部分更新(也称为PATCH更新)的场景。 例子 原始对象: { "Account": "old_account", "Name": "old_name", "Avatar": "old_avatar" } 补丁对象(patch object): { "Account": "new_account", "Name": null } 应用补丁对象后的待更......

struct结构体类型2 - 嵌入结构体值 指针类型区别

作者:matrix 被围观: 3,304 次 发布时间:2023-07-07 分类:Golang | 3 条评论 »

Golang中嵌入结构体类型有两种:值或指针 结论 创建 含内嵌指针struct实例时,必须手动声明嵌入的结构指针。 伪代码如下: package main type BaseDao struct{name string} # 匿名结构体字段BaseDao type OptDao1 struct{BaseDao} # 嵌入值 type OptDao2 struct{*BaseDao} # 嵌入指针 func main(){ opt := OptDao2{BaseDao:&BaseDao{}} //必须手动声明嵌入的结构指针 } 上面代码中OptDao1、OptDao2嵌入了BaseDao结构体,主要区别只有嵌......

Golang的结构体类型struct

作者:matrix 被围观: 977 次 发布时间:2023-06-24 分类:Golang | 一条评论 »

熟悉面向对象语言的话,Golang的struct结构体有点像面向对象编程中的类。但这两者不是完全一样,只能说都有继承、封装、多态的特点。 结构体(struct) 结构体可以将零个或多个任意类型的值聚合在一起,能描述多个数据类型 type Person struct { name string age int value string address string } 成员方法和接收者 func (p *Person) setName(name string) { p.name = name } 说明: setName 为声明的方法 p *Person为接......

GitHub Action自动release发布版本 + docker镜像打包

作者:matrix 被围观: 834 次 发布时间:2023-06-23 分类:零零星星 | 无评论 »

https://github.com/Hootrix/keyword_alert_bot 针对keyword_alert_bot项目早就有添加docker镜像的想法,这次趁着有机会就完成这个feature,也算是使用下GitHub的CI/CD。 我的想法是利用GitHub action功能,推送代码更新后自动打包docker镜像且安装所有依赖。打包的时候把最新版本号写入到代码中(当前日期作为版本号)。使用者把docker镜像pull后可以轻松运行整个bot。 流水线配置 项目的 .github/workflows/main.yml路径下新建文件: name: CI......

构建自己的Python包到Pypi

作者:matrix 被围观: 2,583 次 发布时间:2023-04-28 分类:Python | 4 条评论 »

安装构建工具 首先确保安装了setuptools 和wheel。如果没有就运行以下命令安装: $ pip3 install setuptools wheel twine 配置项目 目录结构可参考: https://github.com/Hootrix/text-box-wrapper 项目中包含以下文件: setup.py:包含项目的元数据和依赖关系。 README.md:项目的描述文件。 LICENSE:选择一个许可证并将其放在此文件中。 wrapper.py:自己定义的文件,包含功能代码 __init__.py 包定义,以及可引入的方法 配置setup.py s......

go build 交叉编译

作者:matrix 被围观: 1,648 次 发布时间:2023-02-10 分类:Golang | 无评论 »

Golang支持跨平台编译,比起python只能编译为当前平台的二进制文件要好太多。 go build help $ go help build usage: go build [-o output] [build flags] [packages] ... 默认编译(输出当前平台二进制文件) $ go build -ldflags="-s -w" main.go && upx -9 ./main 说明: upx 该工具用于压缩二进制文件 -9 表示最高压缩率(选择范围为1-9) 跨平台编译 Mac/Linux系统下: 输出Linux可执行文件: $ CGO_ENABLE=0 GOOS=linux GOARCH......