SoFunction
Updated on 2025-03-01

How to calculate the number of days in Go language

package main
import (
    "fmt"
    "bufio"
    "os"
    "regexp"
    "strconv"
)
func main() {
    year := input("year", "^[0-9]{1}[0-9]{3}$")
    month := input("month", "^(0{1}[0-9]{1}|1{1}[0-2]{1})$")
    count(year, month)
    ("Press Enter button to continue ...")
    reader := ()
    lastInput, _, err := ()
    if err != nil {
        (, "Occur error when input (last) '", lastInput, "':", err)
    }
    return
}
func count(year int, month int) (days int) {
    if month != 2 {
        if month == 4 || month == 6 || month == 9 || month == 11 {
            days = 30
 
        } else {
            days = 31
            (, "The month has 31 days");
        }
    } else {
        if (((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0) {
            days = 29
        } else {
            days = 28
        }
    }
    (, "The %d-%d has %d days.\n", year, month, days)
    return
}
func input(name string, regexpText string) (number int) {
    var validNumber = false
    for !validNumber {
        ("Please input a", name, ": ")
        reader := ()
        inputBytes, _, err := ()
        if err != nil {
            (, "Occur error when input", name, ":", err)
            continue
        }
        inputText := string(inputBytes)
        validNumber, err = (regexpText, inputText)
        if err != nil {
            (, "Occur error when match", name, "(", inputText, "):",err)
            continue
        }
        if validNumber {
            number, err = (inputText)
            if err != nil {
                (, "Occur error when convert", name, "(", inputText, "):", err)
                continue
            }
        } else {
            (, "The", name, "(", inputText, ") does not have the correct format!")
        }
    }
    ("The input", name, ": ", number)
    return
}