为什么我的代码直接跳转到默认值? 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.")
}
}
我刚开始使用 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.")
}
}