2017-08-04 14 views
0

想象我有2层结构:填充片与被引用的对象一起

type Order struct { 
    ID    int64 `gorm:"primary_key"` 
    CurrentStateID int64 
    CurrentState *OrderState 
} 
type OrderState struct { 
    ID  int64 
    .... // other fields 
} 

现在我想使给定的orderIDs片搜索,并有Order充满CurrentState领域分得一杯羹。

我现在的解决方案非常难看,因为我首先获取所有没有状态的订单,然后将状态ID排列到切片中并由其进行搜索。之后,我遍历一个for循环遍历订单并匹配订单和状态。像

var (
    states []*State 
    orders []*Orders 
) 
//searches are done here 
for _, order := range orders { 
    for _, state := range states { 
     if order.CurrentStateID == state.ID { 
      order.CurrentState = state 
      break 
     } 
    } 
} 

回答