英文:
strings.Contains in switch-case GoLang
问题
在Go语言中,switch
语句的case
条件只能是常量表达式,不能使用函数调用。因此,你不能在switch
语句的case
条件中使用strings.Contains
函数。
如果你需要在switch
语句中进行字符串匹配和过滤,你可以考虑使用if
语句来实现。以下是一个示例:
func function(str string) {
if str == "str1" {
// ...
} else if strings.Contains(str, "test") {
// ...
} else {
// ...
}
}
在上述示例中,我们使用了if
语句来进行字符串匹配和过滤。首先,我们检查字符串是否等于"str1",如果是,则执行相应的代码块。如果不是,则继续检查字符串是否包含"test",如果包含,则执行相应的代码块。如果都不满足,则执行else
代码块。
希望这可以帮助到你!如果你有任何其他问题,请随时问我。
英文:
Is it possible to use strings.Contains in switch case?
something like:
func function(str string){
switch str {
case "str1":
...
case strings.Contains("test"):
...
default:
...
}
}
Edit: its an example, thats not the real case I need it for. Im filtering many results and I want all results that contains X and I also have cases that I need to fully match.
答案1
得分: 7
你可以这样做:
package main
import (
"fmt"
"strings"
)
func main() {
str := "testString"
switch {
case strings.Contains(str, "test"):
fmt.Println(true)
default:
fmt.Println(false)
}
}
https://go.dev/play/p/_2fMd-3kE-r
没有参数的switch
相当于switch true
。
英文:
You can do this:
package main
import (
"fmt"
"strings"
)
func main() {
str := "testString"
switch {
case strings.Contains(str, "test"):
fmt.Println(true)
default:
fmt.Println(false)
}
}
https://go.dev/play/p/_2fMd-3kE-r
switch
without argument is like switch true
.
答案2
得分: 0
为什么你需要一个开关来控制这个布尔输出?
使用以下内置函数。
func strings.Contains(s string, substr string) bool
英文:
Why do you need a switch for this boolean output?
Use the following inbuilt function.
func strings.Contains(s string, substr string) bool
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论