database - aerospike-go 库中的嵌入式结构意外行为

标签 database go marshalling aerospike nosql

Aerospike Go 客户端

问题

需要向所有集合添加一组公共(public)字段,即 CreatedAt、UpdtedAt、DeletedAt 等。为此,我创建了一个结构并将其嵌入到所有集合结构中。我需要将公共(public)结构的字段保存在集合中作为给定记录的字段

示例代码

type Table struct {
   CreatedAt time.Time
   UpdatedAt time.Time
   DeletedAt time.Time
}


type Account struct {
   Table
   Name string
   Status bool
   .....
}

对于上面提到的struct Account。我希望记录以bin名称存储

CreatedAt,UpdatedAt,DeletedAt,Name,Status.....

但是当记录被存储时,bin 名称是

Table,Name,Status...

Table 是一个包含键值的映射

是否有可能实现预期的行为?如果是怎么办?

最佳答案

结构嵌入嵌入方法但不反射(reflect)属性。内部类型的属性可通过外部类型访问,但不存在于外部类型的属性中。因此,定义 Table 类型的属性实际上是定义 Table 类型的属性,而不是将 Table 类型的所有属性反射(reflect)到类型 Account.

尝试打印您的 Account 结构 - playground .

关于database - aerospike-go 库中的嵌入式结构意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41931030/

相关文章:

php - 如何使用 PHP 实现与 MySQL 数据库的持久连接?

reflection - golang 获取类型的 reflect.Type

go - 'go install' 尝试安装到/usr/lib/go 而不是我的 GOPATH。没有权限

javascript - javascript推荐的数据库缓存库

mysql - 将 Blob 存储在另一个表中或使用 mysql barracuda

Python Peewee execute_sql() 示例

unit-testing - 在单元测试中模拟 NewManager()

jaxb - 使用 JAXB 和 moxy 自定义枚举编码

json - 如何编码和转义引号

c# - 将 C++ 二维固定长度 char 数组编码(marshal)为结构成员