func (u *UV) Historical(coord *Coordinates, start, end time.Time) error {
	response, err := u.client.Get(fmt.Sprintf("%shistory?lat=%f&lon=%f&start=%d&end=%d&appid=%s", uvURL, coord.Latitude, coord.Longitude, start.Unix(), end.Unix(), u.Key))
	if err != nil {
		return err
	}
	defer response.Body.Close()
	if err = json.NewDecoder(response.Body).Decode(&u); err != nil {
		return err
	}
	return nil
}
Historical gets the historical UV data for the coordinates and times
package openweathermap
import (
	"encoding/json"
	"errors"
	"fmt"
	"time"
)
var errInvalidUVIndex = errors.New("invalid UV index value")
type UVDataPoints struct {
	DT    int64   `json:"dt"`
	Value float64 `json:"value"`
}
type UV struct {
	Coord []float64      `json:"coord"`
	Data  []UVDataPoints `json:"data,omitempty"`
	DT    int64   `json:"dt,omitempty"`
	Value float64 `json:"value,omitempty"`
	Key   string
	*Settings
}
func NewUV(key string, options ...Option) (*UV, error) {
	k, err := setKey(key)
	if err != nil {
		return nil, err
	}
	u := &UV{
		Key:      k,
		Settings: NewSettings(),
	}
	if err := setOptions(u.Settings, options); err != nil {
		return nil, err
	}
	return u, nil
}
func (u *UV) Current(coord *Coordinates) error {
	response, err := u.client.Get(fmt.Sprintf("%suvi?lat=%f&lon=%f&appid=%s", uvURL, coord.Latitude, coord.Longitude, u.Key))
	if err != nil {
		return err
	}
	defer response.Body.Close()
	if err = json.NewDecoder(response.Body).Decode(&u); err != nil {
		return err
	}
	return nil
}