если состояние не так в Голанге - PullRequest
0 голосов
/ 17 октября 2018

Я вычисляю разницу в датах в golang, я написал код, и он выполняется нормально, но когда я беру разницу во времени в минутах, конвертирую ее в целое число и сравниваю в условии if.

codeкоторый я пытаюсь

в соответствии с приведенным ниже условием, он не должен печатать «diffinmin is more P», но это печать.Где я делаю не так?

package main

import (
    "fmt"
    "time"
    "strconv"
)

func main() {
    //fetching current time
    currentTime := time.Now()
    loc := currentTime.Location()
    //past time comes in as string
    pasttimestr := "2018-10-18 01:00"
    layout := "2006-01-02 15:04"
    //converting string to date
    pasttime, err := time.ParseInLocation(layout, pasttimestr, loc)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println("Past Time: ", pasttime)
    fmt.Println("Current Time: ", currentTime)
    //differnce between pastdate and current date
    diff := currentTime.Sub(pasttime)
    var diffinmin int = int(diff.Minutes())
    fmt.Printf( "heloo",diffinmin )
    fmt.Printf("time difference is %v or %v in minutes\n", diff, diff.Minutes())
    var strconfigtime = "9000"
    var mininttimeconfig int
    if mininttimeconfig, err := strconv.Atoi(strconfigtime); err == nil {
    fmt.Printf("i=%d, type: %T\n", mininttimeconfig, mininttimeconfig)
     }

    if diffinmin  >  mininttimeconfig {
    fmt.Printf("diffinmin is greater" )
    }

}

скрипка: https://play.golang.org/p/x6-RebYycpk

1 Ответ

0 голосов
/ 18 октября 2018

Речь идет о scoping, значение mininttimeconfig, которое вы используете для проверки, имеет значение 0.

if mininttimeconfig, err := strconv.Atoi(strconfigtime); err == nil {
    // mininttimeconfig is a new variable scoped to this block
}

// here mininttimeconfig is 0 from declaration line
// var mininttimeconfig int

Попробуйте изменить строки следующим образом:

    var mininttimeconfig int
    mininttimeconfig, err = strconv.Atoi(strconfigtime);
    if err == nil { 
       // ...

Или:

    mininttimeconfig, err := strconv.Atoi(strconfigtime);
    if err == nil { 
       // ...

Обратите внимание, что обычно используется ошибка, например, если err! = Nil {...}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...