Go 语言中变量的作用域详解-特殊语句的作用域

1. if, else if, else 语句

ifelse 块各自有自己的作用域。在 ifelse if 块中声明的变量在对应的块内是有效的。

package main

func main() {
    if a := 1; a == 1 {
        fmt.Println("a is 1")
    }
    // fmt.Println(a) // 这里访问 a 会导致编译错误
}

package main

func main() {
    if a := 1; a != 1 {
        fmt.Println("a is not 1")
    } else {
        fmt.Println(a) // 这里访问 a 不会导致编译错误
    }
}

2. for 语句

for 循环中声明的变量作用域仅限于循环体内。

package main

func main() {
    for i := 0; i < 3; i++ {
        fmt.Println(i)
    }
    // fmt.Println(i) // 这里访问 i 会导致编译错误
}

3. switch 语句

switch 和每个 case 块中声明的变量作用域是相互独立的。

package main

func main() {
    switch n := 1; n {
    case 1:
        var x = 1
        fmt.Println(x) // 输出 1
    case 2:
        // fmt.Println(x) // 这里访问 x 会导致编译错误
    }
}
上一篇:sqlite数据库


下一篇:el-upload照片墙二次封装