выполнять вычисления внутри структуры или интерфейса?

#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. привет, спасибо за предложение!, Я могу получить доступ к его значениям, и я попытался сделать то, что вы предложили, и я думаю, это выглядит хорошо для меня. таким образом, у меня может быть функция настройки. Спасибо!