golang
已收录文章:14059篇
-
在Golang中处理数据库错误时,应优先使用errors.Is判断特定错误类型。1.当查询应返回一行数据却无结果时,需检查err==sql.ErrNoRows或errors.Is(err,sql.ErrNoRows);2.推荐使用errors.Is因其可穿透errorwrapper;3.实际场景中可根据不同错误返回对应的HTTP状态码;4.避免通过err.Error()判断错误类型以防不稳定;5.批量查询时不触发sql.ErrNoRows应改用其他方式判断是否有数据。252 收藏
-
备忘录模式通过发起人、备忘录和管理者三者协作实现对象状态的保存与恢复。发起人负责创建和恢复状态,备忘录存储状态且对外隐藏细节,管理者仅负责保存和传递备忘录而不访问其内容。Go语言中利用结构体、指针和封装特性可简洁实现该模式,关键在于保持备忘录内部状态私有,避免外部直接访问,确保状态管理的安全性与完整性。示例中文本编辑器通过保存多个状态实现撤销功能,Caretaker可扩展支持栈式操作以实现撤销/重做。使用指针传递减少拷贝,结合JSON或Gob编码还可实现持久化存储。252 收藏
-
break用于立即终止当前循环,如在数组查找中找到目标后退出;2.continue跳过当前迭代,常用于过滤不符合条件的元素;3.结合标签可控制嵌套循环的外层循环,提升多层循环处理效率。252 收藏
-
自旋锁 获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,使用这种锁会造成busy-waiting。 它是为实现保护共享资源而提出的一种锁机制。其实,自旋锁与互斥锁比较类似,它们251 收藏
-
一、什么是嵌入类型 先看如下代码: type user struct { name string email string } type admin struct { user // Embedded Type level string } 可以看到admin结构中的一个成员是user,那么admin中就嵌入了user类251 收藏
-
本来是想写gorm相关的知识点的,遇到了批量插入的问题,发现很不科学,才发现gorm已经出了新版本2.0版本,最新的Tag是v1.21.6,我目前使用的是v1.9.10。 新版本的特性 GORM 2.0 完全从零开始,引251 收藏