GO
文章平均质量分 61
damanchen
这个作者很懒,什么都没留下…
展开
-
gorm 遇坑总结
gorm debug 出来的语句可以正常执行,但是程序就是有问题??原创 2022-10-26 19:24:36 · 1105 阅读 · 1 评论 -
golang gorm 零值更新不生效问题处理
快速指南: 通过结构体变量更新字段值, gorm 库会忽略零值字段。就是字段值等于 0, nil, “”, false 这些值会被忽略掉,不会更新。如果想更新零值,可以使用 map 类型替代结构体。一、问题我们都知道,使用 golang 定义一个变量并且不赋初始值时,初始值就默认为 0 值,比如 0, nil, “”, false 等。在使用 gorm 包进行数据库操作时,如果想要进行字段的更新,只需要将要变动的字段进行修改,然后执行 db.Updates() 操作即可。假定有如下结构体定义:.原创 2022-05-11 20:01:45 · 4831 阅读 · 2 评论 -
golang for 循环 + 协程没用?
问题在写巡检脚本的时候,遇到了如下问题,特此记录。最开始写的代码如下:{ var wg sync.WaitGroup for _, a := range activeList { wg.Add(1) go func(ia *model.ImportantActivity) { defer wg.Done() if err := GetBusinessData(ia); err != nil { log.Error(err)原创 2022-01-28 15:22:14 · 1417 阅读 · 0 评论 -
字节序、大端字节序(Big Endian)、小端字节序(Little Endian)总结
什么是字节序?字节序,简单来说,指的是 超过一个字节的数据类型在内存中存储的顺序有几种字节序?大端字节序(Big Endian)高位字节数据存放在内存低地址处,低位字节数据存放在内存高地址处。小端字节序(Little Endian)高位字节数据存放在内存高地址处,低位数据存放在内存低地址处。如上图所示,int32类型的数值 12345678用一个字节表示不了,需要用到4个字节,也就有了字节序的问题。数值 12345678(一千两百三十四万五千六百七十八),这里的最高位数据就是1,最低位数据原创 2021-01-10 10:13:55 · 16499 阅读 · 4 评论 -
Golang中 int int8 int16 int32 int64的区别和取值范围
先说结论吧,方便快速查询验证。总结区别int 类型大小为 8 字节int8 类型大小为 1 字节int16 类型大小为 2 字节int32 类型大小为 4 字节int64 类型大小为 8 字节go语言中的int的大小是和操作系统位数相关的,如果是32位操作系统,int类型的大小就是4字节; 如果是64位操作系统,int类型的大小就是8个字节取值范围int8: -128 ~ 127int16: -32768 ~ 32767int32: -2147483648 ~ 214原创 2021-01-08 19:19:47 · 21856 阅读 · 1 评论 -
Go学习总结——并发编程
1、CSP vs Actor和Actor的直接通信不同,CSP模式则是通过channel进行通讯的,更松耦合一些Go中channel是有容量限制并且独立于处理Groutine,而如Erlang,Actor模式中的mailbox的容量是无限的,接收进程也总是被动地处理消息2、多路选择和超时控制selecttime.After3、channel的关闭和广播向关闭的channel...原创 2020-04-28 16:59:20 · 134 阅读 · 0 评论 -
Go学习总结——包依赖管理
1、package基本复用模块单元,以首字母大写来表明可被包外代码访问代码的package可以和所在目录不一致同一目录里的Go代码的package要保持一致,取名不能错误2、init方法在main被执行前,所有依赖的package的init方法都会被执行不同包的init函数按照包导入的依赖关系决定执行顺序,Go语言可以自动处理这种依赖关系每个包可以有多个init函数包的每个源...原创 2020-04-28 16:58:35 · 490 阅读 · 0 评论 -
Go学习总结——错误处理
1、Go的错误机制没有异常机制error 类型实现了error接口可以通过error.New来快速创建错误实例在处理错误或者调用函数接收错误的时候,要避免嵌套,要从及早失败的角度编写代码,让代码更清晰2、panic和recoverpanic用于不可以恢复的错误panic退出前会执行defer指定的内容3、panic vs os.Exitos.Exit退出时不会调用def...原创 2020-04-28 16:57:57 · 128 阅读 · 0 评论 -
Go学习总结——函数
1、函数是一等公民可以有多个返回值所有参数都是值传递,slice/map/channel会有引用的错觉函数可以作为变量的值函数可以作为参数和返回值2、Go接口接口为非入侵性,实现不依赖于接口定义所有接口的定义可以包含在接口使用者包内倾向于使用小的接口定义,很多接口只包含一个方法较大的接口定义,可以由多个小接口定义组合而成只依赖于必要功能的最小接口3、扩展与复用内嵌...原创 2020-04-28 16:57:04 · 123 阅读 · 0 评论 -
Go学习总结——基础
1、测试文件名一定要以xxx_test.go结尾2、交换变量 a,b = b,a3、连续常量的定义const( Monday = iota + 1 Tuesday Wednesday)const ( open = 1 << iota close pending)4、Go语言的特性Go 对于数据类型的转换是比较严苛的,不支持隐式类型转换,也不支持别名...原创 2020-04-28 16:55:54 · 226 阅读 · 0 评论 -
GO语法简单小结(二)
GO语法简单小结(二)1、续断器ticker2 iota 常量计数器1、续断器tickerGo提供了循环多次的执行某一任务的工具,续断器,实质是单向通道,time.结构体类型中有一个time.Time类型的单向chan.可以简单理解为在特定的时间间隔来重复执行一些任务。代码如下:package mainimport ( "fmt" "time")func main() {...原创 2019-11-30 17:33:43 · 113 阅读 · 0 评论 -
在Linux中如何使用GO作为脚本语言
在Linux中如何使用GO作为脚本语言一、安装GO环境1.1 下载1.2 解压安装1.3 添加环境变量1.4 确认二、编写简单脚本进行测试2.1 线上环境问题2.2 执行环境问题一、安装GO环境(注意:得使用root用户进行安装操作,线上操作需注意)1.1 下载wget https://dl.google.com/go/go1.13.1.linux-amd64.tar.gz如果由于网络...原创 2019-09-28 11:41:45 · 1920 阅读 · 0 评论 -
GO语法简单小结(一)
GO语法简单小结(一)1、 for循环中“ _, ”的用法?2、 Result()3、 转义字符转和原始字符串1、 for循环中“ _, ”的用法?for _, node := range c.nodesfor key, value := range []int{1, 2, 3, 4} { fmt.Printf("key:%d value:%d\n", key, value)}...原创 2019-09-28 11:40:18 · 275 阅读 · 0 评论