gpt4 book ai didi

if-statement - 已声明但未使用 - 如何更新 IF 语句中的变量

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

我正在尝试在 Go Lang 中设置一个具有默认值的 bool 变量并根据条件更新它。 func foo 编译,但函数 bar 不编译并给出错误“f declared and not used”

有一个related answer - 这并不能解释下一个问题

Go 中这个(bar 函数)的正确模式是什么?

代码如下:

package main

import (
"fmt"
"strconv"
)

func foo(m map[string]string) bool {
f := false

if _, exists := m["READWRITE"]; exists {
fmt.Println("Before Updating f : ", f)
f, _ = strconv.ParseBool(m["READWRITE"])
//if err != nil {
// panic(err)
//}
}

fmt.Println("After Updating f : ", f)

return f
}

func bar(m map[string]string) bool {
f := false

if _, exists := m["READWRITE"]; exists {
fmt.Println("Before Updating f : ", f)
f, err := strconv.ParseBool(m["READWRITE"]) // error on this line "f declared and not used"
if err != nil {
panic(err)
}
}

fmt.Println("After Updating f : ", f)

return f
}

func main() {
m := map[string]string{"READWRITE": "true"}

fmt.Println(foo(m))
fmt.Println(bar(m))
}

最佳答案

gives an error "f declared and not used"

f 在您的样本中是一个新声明的变量。它的作用域位于 if block 内,不同于最初在 main() 开始时声明的作用域。

这是一个示例注释代码,可能有助于澄清(也可作为可运行的 Go Playground snippet 获得):

package main

import (
"fmt"
)

func main() {
food := "burger" // (1) variable 'food' is declared
fmt.Println("food is", food) // OUTPUT: "burger"

if true {
food := "fries" // (2) a new 'food' variable is a declared here. it shadows the one in (1)
fmt.Println("food is", food) // this accesses the 'food' var from (2). OUTPUT: "fries"
}

fmt.Println("food is", food) // this accesses the variable from (1). OUTPUT: "burger"
}

希望这有助于澄清。干杯,

关于if-statement - 已声明但未使用 - 如何更新 IF 语句中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52961371/

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