首页 >后端开发 >Golang >将数据存储实体从 Python 加载到 Go 时如何处理嵌套结构错误?

将数据存储实体从 Python 加载到 Go 时如何处理嵌套结构错误?

Patricia Arquette
Patricia Arquette原创
2024-10-25 08:08:28675浏览

How to Handle Nested Struct Errors When Loading Datastore Entities from Python to Go?

将数据存储实体从 Python 加载到 Go:了解嵌套结构错误

在 Google AppEngine 中,尝试从 Python 中读取数据存储实体Go 项目可能会导致错误:

datastore: flattening nested structs leads to a slice of slices: field "Messages"

根本原因

该错误源于 Python 和 Go 编程语言之间不兼容的数据结构。在提供的Python模型中,ModelA包含重复的ModelB类型的属性消息。在 Go 中,ModelA 和 ModelB 都定义了切片字段,从而形成嵌套切片结构。

解决方案

Go 数据存储包在支持嵌套切片方面受到限制。要解决此问题,必须调整 Python 或 Go 中的数据结构:

Python 模型调整

  • 将 ModelA 中的消息更改为单个 ModelB输入而不是切片。

进行模型调整

  • 从 ModelA 中删除切片字段(即,使消息简单地 ModelB)。
  • 在 ModelA 的 Load 方法中实现自定义解码逻辑来处理嵌套结构(如提供的 Go 代码中所示)。

注意事项

  • 选择在 Python 中解决该问题需要重写现有数据。
  • 在 Go 中实现自定义解码可能很复杂且容易出错。

以上是将数据存储实体从 Python 加载到 Go 时如何处理嵌套结构错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn