登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-13 08:45:34 237浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《将嵌入结构复制到新结构中,而无需复制其所有字段》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

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

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
}

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


解决方案


在documentdb中,您可以使用bson包的inline标志来展平嵌入的结构

type MyStructForDB {
  MyStruct   `bson:",inline"`
  Ts         time.Time
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>