Tag: go code

  • golang: Check if key exists in map

    You can easily check if a key exists in a go map by using the ok result:


    value, ok := myMap[key]

    Or in an one line check:


    if val, ok := myMap[key]; ok {
    // do something
    }

     

     

  • Golang: Reverse ISOWeek, get the date of the first day of ISO week

    If you work with weeknummers, you can find the weeknumber of a date with the Golang function time.ISOWeek. However you wish to get the first date of a week, there is no such function in Google Go. So let’s write it our selfs:

    func FirstDayOfISOWeek(year int, week int, timezone *time.Location) time.Time {
    date := time.Date(year, 0, 0, 0, 0, 0, 0, timezone)
    isoYear, isoWeek := date.ISOWeek()

    // iterate back to Monday
    for date.Weekday() != time.Monday {
    date = date.AddDate(0, 0, -1)
    isoYear, isoWeek = date.ISOWeek()
    }

    // iterate forward to the first day of the first week
    for isoYear < year {
    date = date.AddDate(0, 0, 7)
    isoYear, isoWeek = date.ISOWeek()
    }

    // iterate forward to the first day of the given week
    for isoWeek < week {
    date = date.AddDate(0, 0, 7)
    isoYear, isoWeek = date.ISOWeek()
    }

    return date
    }

  • Golang: measure time to execute code

    Sometimes you want to know how long it takes to execute a piece of code. This is how to do it Golang:

    func main() {
    start := time.Now()

    // Do something time consuming

    elapsed := time.Since(start)
    log.Printf(“Time to execute code %s”, elapsed)
    }

     

  • Golang html/template range: access out of loop variable

    When you use range in a Golang html/template the “.” variable changes to the current object from the range. We can however still access to old “.” variable with “$”:

    
    {{range $index, $emp := .employees}}
      {{ $emp.name }}
      {{ msg $ "btn_show" }}
    {{ end }}
    
  • Golang substr or substring equivalent

    Strings are slices in Google Go, so there is really no need for a Golang substr function. For example if you would want to get the first 10 characters of a string:

    dt := "2015-01-01 15:45:12"
    d := dt[0:10]

    The resulting value in d will be: “2015-01-01”.