go语言陷阱之六:Accidental Variable Shadowing

先看有问题的代码:

package main

import "fmt"

func main() {
    x := 1
    fmt.Println(x) //prints 1
    {
        fmt.Println(x) //prints 1
        x := 2
        fmt.Println(x) //prints 2
    }
    fmt.Println(x) //prints 1 (bad if you need 2)
}

短变量声明方式,代码运行也没有问题,但这样写容易引起问题,变量名重复使用,容易引起歧意。
其它这也是见仁见智,代码规范的问题。个人觉得只要使用得当,也没有问题。

你可能感兴趣的:(go语言陷阱之六:Accidental Variable Shadowing)