如何使用自定义时区自动填充类型为time.Time的结构域?

I'm using GORM to retrieve data from a Postgresql database. Inside the postgresql database I'm storing times as the default UTC. When I load them through gorm/golang I would like to automatically convert them to 'Europe/London' location.

Currently, all times are returned as my local timezone (CEST). I'm struggling to find a way to manually override this?

Here is the relevant code:

type Booking struct {
    gorm.Model
    Service   Service
    ServiceID uint `json:serviceId`
    Start     time.Time
    Finish    time.Time
}

func getBookings() http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        bookings := &[]Booking{}

        GetDB().Find(bookings)

        render.JSON(w, r, bookings)
    }
}

I've been looking around and I can't seem to find any information from gorm or golang docs. The two closest things to mentions of this problem that I've found is:

https://github.com/jinzhu/gorm/wiki/How-To-Do-Time

Setting timezone globally in golang

I thought a work around could be to manually change the query results with a loop, but I'm not sure if this is the most efficient solution? - code below:

func getBookings() http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        bookings := &[]Booking{}
        timeZoneBookings := *&[]Booking{}

        GetDB().Find(bookings)

        for _, booking := range *bookings {

            booking.Start = parseToUkTime(booking.Start)
            booking.Finish = parseToUkTime(booking.Finish)

            timeZoneBookings = append(timeZoneBookings, booking)

        }

        render.JSON(w, r, timeZoneBookings)
    }
}



func parseToUkTime(timeToParse time.Time) time.Time {
    loc, _ := time.LoadLocation("Europe/London")

    t := timeToParse.In(loc)

    return t

}

Here is an image of the DB entry:

enter image description here

I assumed it would be easy to either state inside the type I would like the location to be set to Europe/London so the struct would automatically be populated this way, however this doesn't seem to be the case? It's the first time I have worked with timezones, so everything is quite confusing.

Loop through the slice and update the time values in place. Lookup the location once outside of the handler.

func getBookings() http.HandlerFunc {
    loc, _ := time.LoadLocation("Europe/London")
    return func(w http.ResponseWriter, r *http.Request) {
        var bookings []Booking
        GetDB().Find(&bookings)
        for i := range bookings {
            booking[i].Start = bookings[i].Start.In(loc)
            booking[i].Finish = bookings[i].Finish.In(loc)
        }
        render.JSON(w, r, bookings)
    }
}