为什么我的代码直接跳转到默认值? Go 中的开关盒

Why does my code jump straight to default? Switch case in Go

我刚开始使用 Go 并尝试实现 switch 语句。据我所知在其他语言中这个语句需要“break;”但不是在围棋中。不知何故我的代码直接跳转到默认块。当我写这个问题的时候,是23/04/2022,星期六。

P.S。如果你们中的任何人能给我推荐任何平台,我将不胜感激,我可以在这些平台上免费学习 Go 课程。

这是我的代码:

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("when is Sunday?")
    today := time.Now().Weekday()

    switch time.Sunday {
    case today + 0:
        fmt.Println("Today.")

    case today + 1:
        fmt.Println("Tommorow.")

    case today + 2:
        fmt.Println("In 2 days.")

    default:
        fmt.Println("Too far away.")
    }
}

time.Sunday 是一个值为 0 的常量。在您的开关中,您将 1 或 2 添加到 today,但该值在达到值 6 后不会循环回零(星期六)。

所以你的 switch 的第二个和第三个子句永远不会为真。

这就是你想要的:

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("when is Sunday?")
    today := time.Now().Weekday()

    switch today {
    case time.Sunday:
        fmt.Println("Today.")

    case time.Saturday:
        fmt.Println("Tommorow.")

    case time.Friday:
        fmt.Println("In 2 days.")

    default:
        fmt.Println("Too far away.")
    }
}