将嵌入结构复制到新结构中,而无需复制其所有字段

我有一个在我的逻辑中使用的结构


type MyStruct struct {

  F1 string

  F2 string

}

我想将类型MyStruct的值保存到文档数据库中,只添加一个时间戳。所以我创建了一个新的结构嵌入MyStruct


type MyStructForDB {

  MyStruct

  Ts         time.Time

}

在 saveToDb 函数中,我执行以下操作


func saveToDb(s MyStruct) {

  sDb := MyStructForDB{

    s, time.Now()

  }

  // execute the update on the DB

}

如果我这样继续,在数据库上我会找到一个具有以下结构的文档


{

  myStruct: {

    f1: "a value"        // any value that was in s.F1

    f2: "another value"  // any value that was in s.F2

  }

  ts: 2020-06-26T14:15:07.050Z  // a timestamp value

}

虽然这没关系,但我宁愿不要看到该myStruct物业,而宁愿看到像这样的更扁平的文件


{

   f1: "a value"        // any value that was in s.F1

   f2: "another value"  // any value that was in s.F2

   ts: 2020-06-26T14:15:07.050Z  // a timestamp value

}

我知道我可以通过一个一个地复制字段或使用反射来做到这一点,但我只是想知道是否有更简单的方法来实现这一点


慕标5832272
浏览 81回答 1
1回答

慕莱坞森

在 DocumentDB 中,您可以使用package 的inline标志 bson来展平嵌入的结构type MyStructForDB {  MyStruct   `bson:",inline"`  Ts         time.Time}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go