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

时间:2017-01-30 07:45:55

标签: database go marshalling aerospike nosql

Aerospike Go客户端

问题

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

示例代码

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是具有键值的地图

是否有可能实现预期的行为?如果是这样的话?

1 个答案:

答案 0 :(得分:1)

结构嵌入嵌入方法,不反映属性。内部类型的属性可以通过外部类型访问,但不存在于外部类型的属性之间。因此,定义Table类型的属性,您实际上定义了类型Table的属性,并未将类型Table的所有属性都反映为Account类型。

尝试打印Account结构 - playground