「go查漏补缺」命名规则以及 GROM 结构体的应用
概述:
在学习GORM过程中,总是在调用结构体和文件导入这里出错,所以整理了以下文档用于梳理变量/结构体命名规则和import导入的知识点
一、变量/结构体命名规则
变量/结构体都遵守同样的命名规则:可见性由首字母大小写决定
-
大写首字母:公开的(可导出的)其他包可以访问它。
-
小写首字母:私有的(不可导出的) 只能在定义它的包内部访问
命名变量
变量命名应遵循Go的命名惯例,一般使用驼峰式命名法。局部变量通常使用小写字母开头(user),而导出的结构体使用大写开头(User)。这样命名后,你可以直接使用包名加类型名的方式在其他包中引用这些类型或函数。
附录 基本规则
小驼峰 aVar:局部变量(包括函数参数)
大驼峰 AndVar:导出的变量/结构体、类型、函数、方法等
二、GROM实际案例
下面是如何在main.go中导入并使用/models包中的User结构体的具体步骤:
1、定义User结构体
假设有一个(位于/models/user.go)文件,其中定义了User结构体:
注:这里因为User是大写的,表明是可以导出的
// 文件路径: /models/user.go
package modelstype User struct {Name stringAge int
}
2、 在main.go中导入User结构体,以及对应的操作
在main.go中,你可以这样导入并使用User结构体:
···
package mainimport ("fmt""your-module-name/models" // 替换成自己的模块名
)func main() {var user models.Useruser.Name = "Alice"user.Age = 30fmt.Println(user)
}
总结
在main.go中使用models包中的User结构体,你需要先导入models包,然后使用models.User来创建User实例。确保User结构体是导出的(即首字母大写),这样才能在包外部访问它。
三、结构体中的公开和私有字段
//path:/models/user.go
type User struct {Name string // 公开字段age int // 私有字段
}
公开和私有字段类似 java对象 的public和private属性:
公开字段:能自由地读取和修改值
私有字段:不能直接读取或修改值
//path:main.go
func main() {user := models.User{Name: "Alice"}user.Name = "Bob" // 可以修改,因为 Name 是公有字段// user.age = 30 // 编译错误,不能修改,因为 age 是私有字段fmt.Println(user.Name)//fmt.Println(user.age)//错误
}
四、GORM中的gorm.Model和自动迁移功能
1 gorm.Model、
//path:/models/user.go
type User struct {gorm.ModelUsername stringPassword string
}
User结构体包含嵌入字段gorm.Model:一个嵌入式基础模型,GORM会自动为你的数据库表添加y一些基础字段:
- ID:唯一标识符,主键
- CreatedAt:被创建的时间
- UpdatedAt:最后一次更新的时间
- DeletedAt:被删除的时间,用于支持
软删除(标记为删除而非DB实际删除)
3、 GORM自动迁移技术
GORM自动迁移功能:根据go程序中定义的结构体创建对应的数据库表
//连接数据库db, err := gorm.Open(sqlite.Open("gotest1.db"), &gorm.Config{})//使用Gorm自动迁移功能db.AutoMigrate(&models.User{})
4、硬删除和软删除
- 硬删除:实际地从数据库删除
- 软删除:没有实际擅长,只是设置DeletedAt为当前时间,标记为已删,在查询中会被GORM忽略
相关文章:
「go查漏补缺」命名规则以及 GROM 结构体的应用
概述: 在学习GORM过程中,总是在调用结构体和文件导入这里出错,所以整理了以下文档用于梳理变量/结构体命名规则和import导入的知识点 一、变量/结构体命名规则 变量/结构体都遵守同样的命名规则:可见性由首字母大小写决定 大写…...
Django 集成 Celery 实现高效的异步任务处理
概要 在复杂的 Web 应用中,处理长时间运行的任务或定期任务是一项挑战。Django 作为一个强大的 Python Web 框架,可以通过集成 Celery 这一异步任务队列来优化这些任务的处理。Celery 不仅能提高应用性能,还能改善用户体验。本文将深入探讨如…...
Java之异常(上):基本异常体系
一、背景引入: Java中的异常是指:Java程序在运行时可能出现的错误或非正常情况。例如:在程序中试图打开一个根本不存在的文件,在程序中除0等。异常是否出现:通常取决于程序的输入、程序中对象的当前状态以及程序所处的…...
你的关联申请已发起,请等待企业微信的管理员确认你的申请
微信支付对接时,需要申请AppID,具体在下面的位置: 关联AppID,发起申请时,会提示这么一句话: 此时需要登录企业微信网页版,使用注册人的企业微信扫码登录进去,然后按照下面的步骤操作即可。 点击…...
.nvmrc 文件使用详解
文章目录 1. 前言2. .nvmrc 是什么3. 创建 .nvmrc 文件4. 使用 .nvmrc 文件5. 终端自动切换版本 1. 前言 当开发多个项目时,每个项目运行环境要求的 node 版本不一样,那么我们就需要给每个项目指定 node 版本,也就是通过终端执行 nvm install…...
深度学习之基于YoloV5抽烟检测系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于YOLOv5(You Only Look Once)的抽烟检测系统可以用于实时检测图像或视频中是否存在抽烟行…...
解释器模式 (Interpreter Pattern)
定义 解释器模式(Interpreter Pattern)是一种行为型设计模式,用于定义一种语言的语法表示,并提供一个解释器来处理这种语法。这种模式用于实现语言解释器,通常用于专业领域或复杂文本处理中。在解释器模式中ÿ…...
【bug】uniapp的image组件渲染gif图,只有第一次点击的时候有动效,需要每次点击都有gif效果,已解决
前两天遇到的问题,暂时没有解决,就搁置了。 不解决又难受,还好今天解决了,记录下 需求: 两个gif图,分别代表点击之后的男生和女生,并且有两个静态的男生和女生图片 当男生静态图被点击的时候切…...
ubuntu编译sqlite3并使用
SQLite3是一种轻量级的关系型数据库管理系统,它是在C语言基础上实现的。SQLite3具有许多优点,例如: 1.灵活:它可以在多种操作系统上运行,并且可以将多个数据库文件合并成一个文件。 2.易于使用:SQLite3使用…...
【OpenCV+OCR】计算机视觉:识别图像验证码中指定颜色文字
文章目录 1. 写在前面2. 读取验证码图像3. 生成颜色掩码4. 生成黑白结果图5. OCR文字识别6. 测试结果 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【…...
【ROS 2 进阶-MoveIt!】MoveIt!中的关键节点
所有内容请查看:博客学习目录_Howe_xixi的博客-CSDN博客 原文档链接:Docs...
-bash: jps: command not found
背景 服务器的jdk通过yum 安装的,要用jps查询pid,提示找不到命令 yum install -y java-1.8.0-openjdk.x86_64 一、jps命令无法找到 [devhgh-tob-hsbc-dev-003 ~]$ jps -bash: jps: command not found 二、检查基础Java环境 [devhgh-tob-hsbc-dev-003 ~]…...
[CLickhouse] 学习小计
1.建表 正常按照如下语句进行建表,但会报错说缺少ORDER BY 或 PRIMARY KEY CREATE TABLE omds.a (x String COMMENT ,y String COMMENT ,z String ) ENGINE MergeTree(); 若我们仅需建一个没有主键的表,直接使用如下建表语句即可: CREATE…...
一款非常优秀的项目管理工具:进度猫(推荐)
在项目管理中,一个好的工具可以极大地提高效率。 进度猫是一款非常优秀的项目管理工具。它具有非常强大的功能,可以帮助团队更好地管理项目进度。 通过可视化的方式,将项目进度、任务分配、需求变更等全面呈现给团队成员,让团队…...
Bert学习笔记(简单入门版)
目 录 一、基础架构 二、输入部分 三、预训练:MLMNSP 3.1 MLM:掩码语言模型 3.1.1 mask模型缺点 3.1.2 mask的概率问题 3.1.3 mask代码实践 3.2 NSP 四、如何微调Bert 五、如何提升BERT下游任务表现 5.1 一般做法 5.2 如何在相同领域数据中进…...
信号功率放大器的工作原理和特点是什么
信号功率放大器是一种电子设备,用于将输入信号的功率进行放大,以达到所需的输出功率水平。它在各个领域中都有广泛的应用,包括音频放大器、射频放大器、激光功率放大器等。下面将详细介绍信号功率放大器的工作原理和特点。 工作原理ÿ…...
基于go标准分层架构项目设计实现
基于go标准分层架构项目设计实现 缘起 个人博客网址 最近主要看了两方面知识,一方面是技术相关的,如何设计一个比较好的后端架构项目代码;一方面是非技术相关的,如何写一篇好的技术文章,能够让他人读懂并有收获。因…...
原理Redis-IntSet
IntSet IntSet是Redis中set集合的一种实现方式,基于整数数组来实现,并且具备长度可变、有序等特征。 结构如下: typedef struct intset {uint32_t encoding; /* 编码方式,支持存放16位、32位、64位整数*/uint32_t length; /* 元素…...
逸学java【初级菜鸟篇】9.3 Stream流
hi,我是逸尘,一起学java吧 得益于Lambda所带来的函数式编程,引入了一个全新的Stream流概念(就是都基本使用lambda的形式)。 流处理 我们首先理解什么是流处理,它类似于sql语句,可以执行非常复…...
html页面直接使用elementui Plus时间线 + vue3
直接上效果图 案例源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"../js/vue3.3.8/vue.global.js"></script><link rel"styles…...
基于安卓的美食探店与菜谱分享系统毕设源码
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一款基于安卓平台的集成化美食探店与菜谱分享系统以解决当前餐饮信息获取与共享过程中存在的多重问题。随着移动互联网技术的普及及智能手机…...
别再只会换清华源了!保姆级教程:Ubuntu 22.04/20.04 软件源配置与故障排查全攻略
Ubuntu系统软件源配置与故障排查实战指南 1. 理解软件源的工作原理 在Ubuntu系统中,软件源(Repository)是软件包管理系统的核心组件。它不仅仅是简单的下载地址列表,而是一个完整的软件分发体系。理解其工作原理,能帮助…...
PTN网络中的VRRP实战:用eNSP模拟IPRAN网关冗余与链路聚合
IPRAN网络高可用实战:基于eNSP的VRRP与链路聚合深度解析 在运营商级IPRAN网络中,业务连续性保障是核心诉求。当接入层设备或链路发生故障时,如何实现50ms级快速切换而不影响上层业务?本文将基于华为eNSP模拟器,拆解VRR…...
观察 Taotoken 在不同时段与模型下的服务稳定性与可用性
观察 Taotoken 在不同时段与模型下的服务稳定性与可用性 1. 长期使用体验概述 作为长期使用 Taotoken 的开发者,我们在过去六个月中持续通过 API 调用各类主流模型,覆盖了工作日白天、晚间以及周末等不同时段。整体而言,平台提供的统一接入…...
在多轮对话应用中观察通过聚合路由后的API稳定性表现
在多轮对话应用中观察通过聚合路由后的API稳定性表现 1. 多轮对话场景的技术挑战 开发需要连续调用大模型进行多轮对话的应用时,稳定性是核心考量因素之一。这类应用通常需要维持较长的会话周期,期间可能涉及数十次甚至上百次的API调用。在实际工程实践…...
从零到一:用STM32F405RGT6和Keil5打造你的第一个嵌入式‘Hello World’(基于标准外设库)
从零到一:用STM32F405RGT6和Keil5打造你的第一个嵌入式‘Hello World’ 当你第一次拿到STM32F405RGT6开发板时,面对密密麻麻的引脚和陌生的开发环境,可能会感到无从下手。别担心,这篇文章将带你从零开始,一步步完成第…...
从毫米波到Sub-6G:实测对比不同5G频段下,波束管理策略的实战差异与优化要点
毫米波与Sub-6G频段下的5G波束管理实战指南:从原理到参数调优 当我们在东京银座的十字路口测试毫米波基站时,一个有趣的现象出现了:用户设备在移动过程中频繁触发波束恢复流程,而同一位置的Sub-6G设备却保持稳定连接。这个现象揭示…...
2026年护理学论文降AI工具推荐:护理研究和临床实践部分降AI方案
2026年护理学论文降AI工具推荐:护理研究和临床实践部分降AI方案 直接给结论:嘎嘎降AI(www.aigcleaner.com),4.8元,知网AI率58%降到5.9%,稳定可靠。 护理学论文降AI工具怎么选、怎么用…...
3步搞定!Windows 11更新后TranslucentTB启动失败的终极修复指南
3步搞定!Windows 11更新后TranslucentTB启动失败的终极修复指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是不是也遇…...
MuseTalk唇形同步技术完全指南:从入门到实战应用
MuseTalk唇形同步技术完全指南:从入门到实战应用 【免费下载链接】MuseTalk MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting 项目地址: https://gitcode.com/gh_mirrors/mu/MuseTalk 想要让静态人物开口说话,…...
