#struct #interface #go
#структура #интерфейс #Вперед
Вопрос:
Я создаю данные для сохранения в mongodb. У меня есть ответ json от API, подобного этому
{
coord: { lon: 20, lat: 30 }
main:
[
{"temp":304.15,"pressure":1005,"humidity":74,"temp_min":304.15,"temp_max":304.15}
]
}
внутри main[0].temp, main[0].temp_min, main[0].значения temp_max указаны в кельвинах. Я хочу преобразовать его, чтобы выполнять преобразования в celsius, прежде чем сохранять его в mongodb.
Я могу создать простую структуру, подобную этой:
type Item struct {
Temp string
Pressure int
Humidity int
Temp_min string
Temp_max string
}
но я хочу выполнить преобразование в Temp, Temp_min amp; Temp_max перед его сохранением .. Есть ли другой способ, а не присваивать его переменной, а затем переназначать?. можно ли это сделать в интерфейсе?
Я все еще не свободно владею Go, но я учусь, создавая веб-приложение в Go.
Комментарии:
1. Изменение десериализованных объектов — плохая практика, поскольку объект может быть поврежден. Вы должны перестроить новый объект для сериализации.
Ответ №1:
Как вы инициализируете свою структуру?
Если у вас есть доступ к его значениям, вы можете преобразовать его во время инициализации структуры, что-то вроде этого:
func NewItem() *Item {
return amp;Item{convertToCelsius(temp), pressure, humidity convertToCelsius(tempMin), convertToCelsius(tempMax)}
}
Комментарии:
1. привет, спасибо за предложение!, Я могу получить доступ к его значениям, и я попытался сделать то, что вы предложили, и я думаю, это выглядит хорошо для меня. таким образом, у меня может быть функция настройки. Спасибо!