Go 不支持运算符重载,但是时间包怎么解释

Shu*_*g b -2 operator-overloading go

我已经进行了一段时间的 Go 之旅,我刚刚注意到这行代码:-

today := time.Now().Weekday()
    switch time.Saturday {
    case today + 0:
        fmt.Println("Today.")
    case today + 1:
        fmt.Println("Tomorrow.")
    case today + 2:
        fmt.Println("In two days.")
    default:
        fmt.Println("Too far away.")
    }
Run Code Online (Sandbox Code Playgroud)

如果 Go 不支持运算符重载,我如何使用“+”运算符来增加一天?

Bur*_*dar 5

time.Now().Weekday()返回一个类型的值time.Weekday,它是一个int. today+1有效,因为 1 是一个无类型常量,它的类型是根据上下文确定的。在这种情况下,today1都是 类型time.Weekday

还要注意,由于它的定义方式,time.Saturday 是 6,所以time.Saturday == today+2有效,但time.Saturday+2不会匹配任何有效的工作日。