1
mason961125 2021-10-12 15:59:25 +08:00
不考虑性能的话,先把结构体序列化,然后再反序列化到 map (非常省事,但是性能极其感人)
|
2
chaleaoch OP @mason961125 对 这确实一个解决方案我差点就这么干了...
|
3
mason961125 2021-10-12 16:04:30 +08:00
@chaleaoch 其实没太理解是什么情况下需要一个 map 而不是序列化后的字节流...?理论上来说 struct 和 map 序列化都的形式都是一样的,所以一般 HTTP API 返回 struct 就够了; gRPC 就完全都是 protobuf 生成的 struct 了,直接返回 map 的情况确实比较少。
|
4
chaleaoch OP https://github.com/jinzhu/copier 这个玩意好像可以, 实验中...
|
5
chaleaoch OP @mason961125 我需要一个只读的 session
我从 redis 里读出来的 session 是一个 map 因为 我只负责读, 我不确定 都写了哪些 信息. 所以 session 定义成 map[string]interface 我将这个结构返回给应用但是我并不想应用修改 里面的信息, 或者说我想让他修改了和没修改一样. 从我的方法取出来的 session 永远是一样的. 不知道说解释清楚没. 假设写 session 和 写应用的 是两个人, 那么 写应用的人 也就是 调用 session 的人是不可信的. 所以我想将它变成只读的. |
6
ninerec 2021-10-12 20:29:59 +08:00
希望数据不会被调用方修改
1. 调用方用得更舒适,返回原生的 Map,就得考虑 deep copy,你找到的 https://github.com/jinzhu/copier 很好呢。 2. 做封装,本质是提供不可修改( immutable )的数据,搜了下,https://github.com/benbjohnson/immutable 类似这样即可。 |