This sample code:
package main
import (
"fmt"
"time"
)
type Requests struct {
RequestDate string `requestDate`
Datas []time.Time `datas`
}
type Appsettings struct {
Requests []Requests `request`
}
var appsettings Appsettings
func addRequest(requestTime time.Time) {
timeString := requestTime.Format("01/02/2006 03:04 PM")
requestFound := false
for key, request := range appsettings.Requests {
if request.RequestDate == timeString {
requestFound = true
request.Datas = append(request.Datas, requestTime)
appsettings.Requests[key] = request
}
}
if requestFound == false {
newRequest := Requests{
RequestDate: timeString,
Datas: make([]time.Time, 0),
}
newRequest.Datas = append(newRequest.Datas, requestTime)
appsettings.Requests = append(appsettings.Requests, newRequest)
}
}
func printRequests() {
for _, request := range appsettings.Requests {
fmt.Printf("%s: request count last 60s : %d
", request.RequestDate, len(request.Datas))
}
}
func main() {
appsettings = Appsettings{}
appsettings.Requests = make([]Requests, 0)
requestTime, _ := time.Parse(time.RFC3339, "2006-09-13T11:04:00Z")
addRequest(requestTime)
requestTime, _ = time.Parse(time.RFC3339, "2006-09-13T15:04:00Z")
addRequest(requestTime)
requestTime, _ = time.Parse(time.RFC3339, "2006-09-13T15:04:59Z")
addRequest(requestTime)
requestTime, _ = time.Parse(time.RFC3339, "2006-09-13T15:05:01Z")
addRequest(requestTime)
printRequests()
}
Reproduce this output:
09/13/2006 11:04 AM: request count last 60s : 1
09/13/2006 03:04 PM: request count last 60s : 2
09/13/2006 03:05 PM: request count last 60s : 1
Go playground link: https://play.golang.org/p/XqyhScHDW8R