Я использую checkr/goflagr
, специально пытаясь создать EvalContext и заполнить поле EntityContext (для краткости некоторое содержимое ниже удалено)
type EvalContext struct {
EntityContext *interface{} `json:"entityContext,omitempty"`
// flagID
FlagID int64 `json:"flagID,omitempty"`
}
Это код генерируется SwaggerGen, и я не уверен, как я могу отправить структуру в эту функцию без какого-либо ужасного обходного пути.
Моя интуиция сказала, что я должен иметь возможность просто передать адрес экземпляра структура, например
type entityContext struct {
Environment string `json:"environment"`
}
entityContextImpl := entityContext{Environment:"prod"}
eval_ctx := goflagr.EvalContext{
FlagID: int64(19),
EntityContext: &entityContextImpl,
}
Но это не так с
cannot use &entityContextImpl (type *entityContext) as type *interface {} in field value:
*interface {} is pointer to interface, not interface
Я получил его для работы со следующим обходным решением:
func convertToStarInterface(i interface{}) *interface{} {
return &i
}
func myFunc() {
type entityContext struct {
Environment string `json:"environment"`
}
entityContextImpl := entityContext{Environment:"prod"}
ec := goflagr.EvalContext{
FlagID: int64(18),
EntityContext: convertToStarInterface(entityContextImpl),
}
}
Но он чувствует как будто должен быть способ использовать эту функцию конвертера