前言
今天遇到了一个 bug, 是 golang 的orm导致的. 使用了gorm框架. 通过实现Scan与Value可以将数据库中的 json 内容解析出来, 免除了 字符串再解码的步骤....经过多次尝试, 我发现将Value方法的从属从指针类型改为值类型就可以解决这个问题.
此时我恍然大悟, 想起了之前的方法集的概念....指针类型拥有 值/指针 的方法
值类型只拥有值类型的方法
也就是说, go 在底层是使用值类型来调用的, 所以拿不到指针方法, 故而报错....我默默的点起一支烟, 望着眼前的代码发起了呆.
我经过与之前改动的对比, 知道问题一定是出在指针与值类型的转换上.
我我我我的天, 最终我发现我犯了一个多么愚蠢的错误....总结
就在我刚开始查这个问题的时候, 我自认为找到了什么不得了的 bug, 满心激动的查了下去. 直到最终发现问题的时候, 我懵逼了.
之前我哥就和我说, 查问题要从表现去推测.