golang变量的作用域测试

2020-06-20  本文已影响0人  Odven

1) 测试代码

1. example1.go
package main

import (
        "fmt"
)

var a string  // 定义一个string类型的全局变量a

func main() {
    a = "male"
    fmt.Println(a)

    f1()
}

func f1() {
    // var a string = "female"  // 这个是一条语句,定义一个局部变量a
    a := "female" // 这个是两条语句  var a string  ;   a =  "female",虽然和上面的效果一样,但是是不一样的
    fmt.Println(a)

    f2()

    for i := 1; i < 2; i++ {
        fmt.Println(a)
    }

    f2()

}

func f2() {
    fmt.Println(a)
}

执行测试:
go run example1.go
male
female
male
female
male


2. example2.go
package main

import (
    "fmt"
)

var a int = 100

func modify()
    //a = 10  // 这个是改变了全局变量a的值
    a := 10  // 这个是先创建一个局部变量a,然后赋值为10,没有修改全局变量a
    fmt.Println("在modify函数里a=", a)
}

func main() {
    modify()
    fmt.Println(" 在main函数里a=", a)
}

执行测试
go run example2.go
在modify函数里a= 10
在main函数里a= 100
上一篇 下一篇

猜你喜欢

热点阅读