假设有以下Unload结构,它作为来自微服务 A 的单个元素响应,并且每个Item最初都有一个空Units切片:
type Unload struct {
UnloadCode string
Orders []Order
}
type Order struct {
OrderCode string
Items []Item
}
type Item struct {
ItemCode string
Units []string
}
还有一个ItemUnit结构,它来自微服务 B 的切片响应:
type ItemUnit struct {
ItemCode string
Units []Unit
}
type Unit struct {
UnitName string
}
我们需要根据两边的相似性来填充Item,Units切片的对应UnitName值。ItemCodes
为了解决这个问题,我设法提出了以下解决方案:
for orderIndex, order := range unload.Orders {
for itemIndex, item := range order.Items {
for _, itemUnit := range itemUnits {
if item.ItemCode == itemUnit.ItemCode {
for _, unit := range itemUnit.Units {
unload.Orders[orderIndex].Items[itemIndex].Units = append(unload.Orders[orderIndex].Items[itemIndex].Units, unit.UnitName)
}
}
}
}
}
我自己不是围棋专家,但在我看来,这个解决方案的时间复杂度成本非常高。是否有任何其他更优雅且可能具有更小时间复杂度的方法来解决这个问题?
*请记住,我无法更改任何结构的结构。
森栏
相关分类