Golang代码中遇到的问题如何解决

Golang代码中遇到的问题如何解决 https://play.golang.org/p/Ht1G6Ajz0wl

为什么 case (4==4) 没有输出?

package main

import "fmt"

func main() {
    switch {
    case 1 == 1:
        fmt.Println("1 == 1")
    case 2 == 2:
        fmt.Println("2 == 2")
    case 3 == 3:
        fmt.Println("3 == 3")
    case 4 == 4:
        fmt.Println("4 == 4")
    }
}

更多关于Golang代码中遇到的问题如何解决的实战教程也可以访问 https://www.itying.com/category-94-b0.html

14 回复

有趣

更多关于Golang代码中遇到的问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


谢谢 🙂

谢谢!这真的很有帮助!我觉得我要把这个保存下来

第一个正确的条件是3==3。这个条件执行后程序就会退出。

单引号应该放在哪里?

在变量周围进行赋值,就像在我的示例链接中一样

// 关于 rune 类型

好的。那行。一般来说,什么时候使用单引号呢?

因为当 case 3==3 判断为真时,switch 语句就执行完毕了。在此之后便结束执行。

是的,单引号缺失了。

https://play.golang.org/p/ihUaSa0ze4J

[!quote] jayts: 💗

我做了些错误的事情

Go Playground - The Go Programming Language

感谢各位先生。你们的回答都很有帮助,特别是Jayts的回答。感谢大家抽出时间。

Jayts,我尝试了f和g并很满意结果。我尝试了心跳符号但出现了类似“无效字符”的提示……不确定是否放对了位置。我把它放在这里:

var letter rune = `:heartpulse:`

你好 Cherolyn,

我亲自尝试了一下,发现直接复制粘贴我帖子中的 Unicode 心形符号是行不通的。也许需要将其作为代码引用:

var letter rune = 💗

试试这个方法。我刚才试过是有效的。

package main
import "fmt"
func main() { fmt.Println("I💗Go") }

处理 Unicode 有时可能会有点棘手。

在 Go 语言的 switch 语句中,当没有指定条件表达式(即 switch 后面没有跟变量或表达式)时,它会按顺序评估每个 case 的条件。但是,一旦某个 case 的条件为 true,程序会执行该 case 的代码块,然后立即退出整个 switch 语句,不会继续检查后续的 case

在你的代码中:

  • 第一个 case 1 == 1 条件为 true,因此执行 fmt.Println("1 == 1"),然后退出 switch
  • 后续的 case(包括 4 == 4)虽然条件也为 true,但不会被评估或执行。

如果你希望所有为 truecase 都执行,需要使用 fallthrough 语句显式地继续执行下一个 case。但注意,fallthrough 会无条件执行下一个 case 的代码,而不检查其条件。

修改后的示例,使用 fallthrough 让所有匹配的 case 执行:

package main

import "fmt"

func main() {
    switch {
    case 1 == 1:
        fmt.Println("1 == 1")
        fallthrough
    case 2 == 2:
        fmt.Println("2 == 2")
        fallthrough
    case 3 == 3:
        fmt.Println("3 == 3")
        fallthrough
    case 4 == 4:
        fmt.Println("4 == 4")
    }
}

输出:

1 == 1
2 == 2
3 == 3
4 == 4

或者,如果你需要基于多个独立条件执行不同代码块,可以使用多个独立的 if 语句:

package main

import "fmt"

func main() {
    if 1 == 1 {
        fmt.Println("1 == 1")
    }
    if 2 == 2 {
        fmt.Println("2 == 2")
    }
    if 3 == 3 {
        fmt.Println("3 == 3")
    }
    if 4 == 4 {
        fmt.Println("4 == 4")
    }
}

输出:

1 == 1
2 == 2
3 == 3
4 == 4
回到顶部