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

2018-09-27 09:18

阅读:748

  本文实例讲述了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语言程序设计有所帮助。


评论


亲,登录后才可以留言!