Go语言计算指定年月天数的方法
本文向大家介绍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语言程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#yiidian.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。