dongtan5555 2018-01-12 21:49
浏览 928
已采纳

当一个结构包含另一个结构时,如何在Go中将其转换为另一个结构?

I would like to know if there is easy way to convert from one struct to another in Go when one struct includes the other.

For example

type Type1 struct {
  Field1 int
  Field2 string
}

type Type2 struct {
  Field1 int
}

I know that it can be handled like this

var a Type1{10, "A"}
var b Type2
b.Field1 = a.Field1

but if there are many fields, I will have to write numerous assignments. Is there any other way to handle it without multiple assignments?

In a word, is there anything like b = _.omit(a, 'Field2') in javascript?

  • 写回答

1条回答 默认 最新

  • dongtan8122 2018-01-12 21:53
    关注

    Not directly, no. You can freely convert between identical types only.

    You can get various levels of solutions to this type of problem:

    • writing the assignments out yourself (likely the best performance)
    • using reflection to copy from one to the other based on field names
    • something quick-and-dirty like marshalling one type to JSON then unmarshalling to the other type (which is basically using reflection under the hood with a plaintext middleman, so it's even less efficient, but can be done with little work on your part)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题