本文主要是介绍Go语言:time()函数的用法(案例三天打鱼二天晒网),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在Go语言中,time.Time 的类型中,集合许多非常有用的函数,如time.Date(),time.Since(),time.Sub()等。这都大大方便了对于时间的统计。
案例:编写一个函数,判断输入的某一天是打鱼还是晒网.
思路:1、利用time.Date等函数,计算输入的那一天到指定日期的天数
2、三天打鱼二天晒网,总计是五天,如果按第1、2、3天是打鱼的,那么第4、5天为晒
网。用总计天数%5的余数,进行判断这一天是打鱼还是晒网。
package mainimport ("fmt""time"_ "strconv"
)func getDays(y, m, d int) int { inputTime := time.Date(y, time.Month(m), d, 0, 0, 0, 0, time.Local)initTime := time.Date(1990, 1, 1, 0, 0, 0, 0, time.Local)//统计输入的日期与当前的日期之间的天数//daysSum := int(time.Since(inputTime).Hours()/24)//将天数转成小时,再除以24得出的结果就是天数,totalDays := int(inputTime.Sub(initTime).Hours()/24)return totalDays + 1 //需要加上1天
}func inputDate() (y,m,d int) {var year, month, day intvar count, i, j inta:for {fmt.Print("请输入年份:")fmt.Scanln(&year)if year >= 1990 {break a} else {count ++fmt.Printf("年份输入有误,您还有%v次机会 ...\n",5 - count)}if count == 5 {fmt.Println("您输入错误已满5次,3秒后将关闭程序...")time.Sleep(3 * time.Second)break a }}b:for {fmt.Print("请输入月份:")fmt.Scanln(&month)if month <= 12 && month >= 1 {break b} else {i ++fmt.Printf("月份输入有误,您还有%v次机会 ...\n",5 - i)}if i == 5 {fmt.Println("您输入错误已满5次,3秒后将关闭程序...")time.Sleep(3 * time.Second)break b}}c:for {fmt.Print("请输入日期:")fmt.Scanln(&day)if day <= 31 && day >= 1 {break c}else {j ++fmt.Printf("日期输入有误,您还有%v次机会 ...\n",5 - j)}if j == 5 {fmt.Println("您输入错误已满5次,3秒后将关闭程序...")time.Sleep(3 * time.Second)break c}}return year, month, day
}func main() {daysSum := getDays(inputDate())fmt.Printf("您输入的日期与1990年1月1日相隔%v天... \n",daysSum)daysRes := daysSum % 5switch daysRes {case 1,2,3 :fmt.Println("今天打鱼")case 4,5:fmt.Println("今天晒网")default:fmt.Println("今天休息")}}
输出的结果:
这篇关于Go语言:time()函数的用法(案例三天打鱼二天晒网)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!