Go不支持运算符重载,但如何解释时间包
我做围棋已经有一段时间了,我刚刚注意到这行代码:-Go不支持运算符重载,但如何解释时间包,go,operator-overloading,Go,Operator Overloading,我做围棋已经有一段时间了,我刚刚注意到这行代码:- today:=time.Now().Weekday() 转换时间,星期六{ 今日案例+0: fmt.Println(“今天”) 今日案例+1: fmt.Println(“明天”) 今日案例+2: fmt.Println(“两天内”) 违约: fmt.Println(“太远了”) } 如果Go不支持运算符重载,如何使用“+”运算符来增加日期?time.Now().Weekday()返回类型为time.Weekday的值,该值是inttoday+
today:=time.Now().Weekday()
转换时间,星期六{
今日案例+0:
fmt.Println(“今天”)
今日案例+1:
fmt.Println(“明天”)
今日案例+2:
fmt.Println(“两天内”)
违约:
fmt.Println(“太远了”)
}
如果Go不支持运算符重载,如何使用“+”运算符来增加日期?time.Now().Weekday()
返回类型为time.Weekday
的值,该值是int
today+1
有效,因为1是一个非类型常量,其类型根据上下文确定。在这种情况下,今天的和1
都属于time.Weekday类型
还要注意的是,由于它的定义方式,时间。星期六是6,
所以time.Saturday==今天+2
有效,但time.Saturday+2
不会匹配任何有效的工作日。我不确定您的问题,但我想您可以关注time
套餐。它很强大
围棋中有许多时间类型,例如时间.工作日
,时间.持续时间
,以及时间.月
。它们支持+
运算符,因为它们的基本类型是数字,但不支持time.time
。它的基本类型是结构。我们可以使用time.time
的方法进行操作,如time.add
,time.sub
,time.adddate
,time.after
,time.before
,time.equa
您可以使用time.unix
或time.unixnano
来获取数字类型的时间戳进行操作
作为一个例子,我实现了两种方法来计算从某个时间到下周的时间以及与当前时间的偏差
导入(
“时间”
)
func nextweekDayer(现在是time.time,工作日time.weekday)time.time{
立即返回.AddDate(0,0,NextWeekdayNum(现在,工作日))
}
func NextWeekdayNum(现在是time.time,工作日time.weekday)int{
差异:=(工作日-现在。工作日())+7
如果差异>=7{
差值-=7
}
返回整数(差分)
}
你看了什么,一周中的每一天都是什么?但是(time.Saturday)%7会。谢谢你,这就解释了一切,我应该知道底层的原语类型是int。