华域联盟 Golang Go语言计算指定年月天数的方法

Go语言计算指定年月天数的方法

本文实例讲述了Go语言计算指定年月天数的方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下: 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)

    fmt.Println("Press Enter button to continue ...")

    reader := bufio.NewReader(os.Stdin)

    lastInput, _, err := reader.ReadRune()

    if err != nil {

        fmt.Fprintln(os.Stderr, "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

            fmt.Fprintln(os.Stdout, "The month has 31 days");

        }

    } else {

        if (((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0) {

            days = 29

        } else {

            days = 28

        }

    }

    fmt.Fprintf(os.Stdout, "The %d-%d has %d days.\n", year, month, days)

    return

}

func input(name string, regexpText string) (number int) {

    var validNumber = false

    for !validNumber {

        fmt.Println("Please input a", name, ": ")

        reader := bufio.NewReader(os.Stdin)

        inputBytes, _, err := reader.ReadLine()

        if err != nil {

            fmt.Fprintln(os.Stderr, "Occur error when input", name, ":", err)

            continue

        }

        inputText := string(inputBytes)

        validNumber, err = regexp.MatchString(regexpText, inputText)

        if err != nil {

            fmt.Fprintln(os.Stderr, "Occur error when match", name, "(", inputText, "):",err)

            continue

        }

        if validNumber {

            number, err = strconv.Atoi(inputText)

            if err != nil {

                fmt.Fprintln(os.Stderr, "Occur error when convert", name, "(", inputText, "):", err)

                continue

            }

        } else {

            fmt.Fprintln(os.Stdout, "The", name, "(", inputText, ") does not have the correct format!")

        }

    }

    fmt.Println("The input", name, ": ", number)

    return

}

希望本文所述对大家的Go语言程序设计有所帮助。

本文由 华域联盟 原创撰写:华域联盟 » Go语言计算指定年月天数的方法

转载请保留出处和原文链接:https://www.cnhackhy.com/109987.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们