gpt4 book ai didi

go - 将参数解析为 bool 或仅在 switch 语句中使用字符串

转载 作者:数据小太阳 更新时间:2023-10-29 03:38:39 24 4
gpt4 key购买 nike

我遇到过几种情况,我想使用路由来更改数据库中的某些 Is_Active 字段,但我对性能很好奇。

让我们有一个路由处理程序:

func testHandler(r *mux.Router) {
r.HandleFunc("/test/{status}" statusHandler).Methods("GET")
}

现在该参数将永远为 0 或 1,除非用户尝试其他操作,但无论哪种方式,除非它为 0 或 1,否则什么也不会发生。我的问题是,将字符串解析为 bool 值是否更快,这将涉及带来在 strconv 包中还是只对字符串进行切换会更快?

两者的例子:

func statusHandler(w http.ResponseWriter, r *http.Request) {
v := mux.Vars(r)
active, err := strconv.ParseBool(v["status"])
// Handle err

if active {
// Do something
} else {
// Do something else
}
}

func statusHandler(w http.ResponseWriter, r *http.Request) {
v := mux.Vars(r)

switch v["status"] {
case "0":
// Do something
case "1":
// Do something else
default:
// Throw 500 Error
}
}

最佳答案

你可以看到ParseBool的源代码here .它也使用 switch,但用例更多。如果编译器内联它的代码,速度应该与你的代码非常相似。如果你想要一个明确的答案,你应该对不同的案例进行基准测试。

一般来说,我不鼓励你注意这个小细节。这只是几纳秒的问题,但它会使您的代码更难以理解。从分析您的代码开始优化,以找到需要花费大量时间的热点并修复它们。

关于go - 将参数解析为 bool 或仅在 switch 语句中使用字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47533200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com