2016-02-24 2 views
0

Как я могу получить доступ к полям массива Struct, который находится внутри другого Struct?Как получить доступ к golang Struct Array внутри другого Struct?

Мои Структуры следующим образом: -

type Company struct { 
Id    bson.ObjectId `bson:"_id,omitempty"` 
Company_name string 
Admin   UserMinimal 
Process   []ProcessItem 
} 

type ProcessItemMinimal struct { 
Id    bson.ObjectId `bson:"_id,omitempty"` 
Process_name string 
Processtype  int64 
} 

type ProcessItem struct{ 
ProcessItemMinimal `bson:",inline"` 
Sortorder   int64 
} 

Мне нужно хранить некоторые данные в [] ProcessItem внутри структуры компании. Данные будут такими.

ProcessItem[0]=Process_name:"Enquiry",Processtype:0,Sortorder:0} 
ProcessItem[1]=Process_name:"Converted",Processtype:1,Sortorder:1} 
ProcessItem[2]={Process_name:"Enquiry",Processtype:1,Sortorder:2} 

ответ

2

Если вы ищете для установки данных с помощью composite struct literals, это можно сделать так:

company.Process = []ProcessItem{ 
    ProcessItem{ 
     ProcessItemMinimal: ProcessItemMinimal{ 
      Process_name: "Enquiry", 
      Processtype: 0, 
     }, 
     Sortorder: 0, 
    }, 
    ProcessItem{ 
     ProcessItemMinimal: ProcessItemMinimal{ 
      Process_name: "Converted", 
      Processtype: 1, 
     }, 
     Sortorder: 1, 
    }, 
} 

Вы должны указать ProcessItemMinimal при создании структуры буквальной, поскольку, как the Specification говорит:

Продвигаемые поля действуют как обычные поля структуры, за исключением того, что они не могут использоваться как имена полей в составных литералах строки UCT.

+0

«При создании литерала структуры вы должны указать ProcessItemMinimal», как это сделать? Получение ошибки "неизвестное поле ProcessItem" ProcessItemMinimal "в строковом литерале" –

+0

ОК получилось .. Спасибо, человек ... –

Смежные вопросы