Я пытаюсь сделать что-то вроде этого:
Структура для сохранения настройки:
type Setting struct{
Name string
DataType types.Type
}
Определение настройки:
var SETTING_DebugLogging Setting = Setting{
Name: "DebugLogging",
DataType: bool, <-- This is wrong
}
, а затем получить значение из карты с использованием отражения и значение в DataType:
// Get a value setting, or his default
func (s Setting) Get() interface{}{
val, ok := settings[s].(s.DataType) <-- This is wrong
if !ok{
return s.DefaultValue.(s.DataType) <-- This is wrong
}
return val
}
Я не хочу этого делать, чтобы «Get» всегда возвращал значение, ожидаемое для этого параметра. Если он неверный, возвращает значение по умолчанию, поэтому мне не нужно проверять снова в коде.
Достаточно просто сделать var: = setting.Get (). (Setting.DataType), нет Необходимые проверки.
Я также пытался использовать отражение.kind, чтобы сохранить тип настройки. И это работает для его хранения, но я не могу использовать его для анализа последнего:
Это нормально с отражением. Вид:
// Game to launch
var SETTING_GameToLaunch Setting = Setting{
Name: "GameToLaunch",
DataType: reflect.Bool,
DefaultValue: 2,
}
Но последнее не работает:
func (s Setting) Get() interface{}{
val, ok := settings[s].(s.DataType)
Итак. Любые идеи о том, как я могу это сделать? Сохранить тип и использовать последний с отражением?