Go語(yǔ)言計(jì)算指定年月天數(shù)的方法
本文實(shí)例講述了Go語(yǔ)言計(jì)算指定年月天數(shù)的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
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
}
希望本文所述對(duì)大家的Go語(yǔ)言程序設(shè)計(jì)有所幫助。
- Go語(yǔ)言計(jì)算兩個(gè)經(jīng)度和緯度之間距離的方法
- Golang記錄、計(jì)算函數(shù)執(zhí)行耗時(shí)、運(yùn)行時(shí)間的一個(gè)簡(jiǎn)單方法
- go語(yǔ)言計(jì)算兩個(gè)時(shí)間的時(shí)間差方法
- golang模板template自定義函數(shù)用法示例
- golang實(shí)現(xiàn)http服務(wù)器處理靜態(tài)文件示例
- golang簡(jiǎn)單位運(yùn)算示例
- golang解析xml的方法
- golang的HTTP基本認(rèn)證機(jī)制實(shí)例詳解
- golang簡(jiǎn)單tls協(xié)議用法完整示例
- golang與php實(shí)現(xiàn)計(jì)算兩個(gè)經(jīng)緯度之間距離的方法
相關(guān)文章
go實(shí)現(xiàn)圖片拼接與文字書(shū)寫(xiě)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于go實(shí)現(xiàn)圖片拼接與文字書(shū)寫(xiě)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
Go語(yǔ)言數(shù)據(jù)類型簡(jiǎn)單介紹
這篇文章主要介紹了Go語(yǔ)言數(shù)據(jù)類型簡(jiǎn)單介紹的相關(guān)資料,需要的朋友可以參考下2023-08-08
golang判斷結(jié)構(gòu)體為空的問(wèn)題
這篇文章主要介紹了golang判斷結(jié)構(gòu)體為空的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
go語(yǔ)法入門(mén)泛型type?parameters簡(jiǎn)稱T(類型形參)兩種場(chǎng)景使用
這篇文章主要為大家介紹了go語(yǔ)法入門(mén)泛型type?parameters簡(jiǎn)稱T(類型形參)兩種場(chǎng)景使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
Go語(yǔ)言如何利用Mutex保障數(shù)據(jù)讀寫(xiě)正確
這篇文章主要介紹了互斥鎖的實(shí)現(xiàn)機(jī)制,以及?Go?標(biāo)準(zhǔn)庫(kù)的互斥鎖?Mutex?的基本使用方法,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下2023-05-05
Go設(shè)計(jì)模式之訪問(wèn)者模式講解和代碼示例
訪問(wèn)者是一種行為設(shè)計(jì)模式, 允許你在不修改已有代碼的情況下向已有類層次結(jié)構(gòu)中增加新的行為,本文將通過(guò)代碼示例給大家詳細(xì)的介紹一下Go設(shè)計(jì)模式之訪問(wèn)者模式,需要的朋友可以參考下2023-08-08
淺析Golang中的net/http路由注冊(cè)與請(qǐng)求處理
這篇文章主要為大家詳細(xì)介紹了Golang中的net/http路由注冊(cè)與請(qǐng)求處理的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
Go語(yǔ)言實(shí)現(xiàn)類似c++中的多態(tài)功能實(shí)例
Go本身不具有多態(tài)的特性,不能夠像Java、C++那樣編寫(xiě)多態(tài)類、多態(tài)方法。但是,使用Go可以編寫(xiě)具有多態(tài)功能的類綁定的方法。下面來(lái)一起看看吧2016-09-09

