gpt4 book ai didi

go - bool 值设置为 true 无意中更改为 false

转载 作者:IT王子 更新时间:2023-10-29 01:51:24 25 4
gpt4 key购买 nike

在我的 golang 应用程序中,我根据表单输入将一些全局变量设置为 true,然后发现它们在后续函数中使用时已更改为 false。问题,在 golang 中声明和设置 bool 值的正确方法是什么?

var withKetchup bool
var withMustard bool

func orderProcess(w http.ResponseWriter, r *http.Request){

r.ParseForm()
withKetchup := r.FormValue("withKetchup") //set to true (in form js form selection)
withMustard := r.FormValue("withMustard") //set to true

code omitted ///
}

func prepareOrder(){

code omitted//
fmt.Println(withKetchup, withMustard) //both are false even though initially set to true
if withKetchup == true && withMustard == true{

}else {

}


}

最佳答案

代码

 withKetchup := r.FormValue("withKetchup") 

使用 short variable declaration 声明并设置字符串类型的局部变量.要设置全局 bool 变量,请通过删除“:”将语句转换为赋值。此外,通过将表单值与 ""进行比较来计算 bool 值:

 withKetchup = r.FormValue("withKetchup") == "true"

因为服务器并发执行处理程序,所以使用这样的全局变量是不安全的。我建议将值作为参数传递给 prepareOrder:

func orderProcess(w http.ResponseWriter, r *http.Request){

r.ParseForm()
withKetchup := r.FormValue("withKetchup") == "true"
withMustard := r.FormValue("withMustard") == "true"
prepareOrder(withKetchup, withMustard)
}

func prepareOrder(withKetchup, withMustard bool){
if withKetchup == true && withMustard == true{

}else {

}
}

关于go - bool 值设置为 true 无意中更改为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29270083/

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