zoukankan      html  css  js  c++  java
  • Golang作用域—坑

    先举个栗子,全局作用域变量,与 := 符号声明赋值新变量

    package main
    
    import "fmt"
    
    var a = "GG"
    
    func main() {
        n()
        m()
        n()
    }
    func n() {
        fmt.Println(a)
    }
    func m() {
        // 对于 := 定义的变量,新变量a与全局已定义的a变量同名,不在一个作用域
        //所以golong定义新的变量a。遮住全局变量a,所以m()打印"66"
        a := "66"
        fmt.Println(a)
    }

    局部变量

    在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。

    以下实例中 main() 函数使用了局部变量 a, b, c:

    package main
    
    import "fmt"
    
    func main() {
       /* 声明局部变量 */
       var a, b, c int 
    
       /* 初始化参数 */
       a = 10
       b = 20
       c = a + b
    
       fmt.Printf ("结果: a = %d, b = %d and c = %d
    ", a, b, c)
    }
    局部变量声明

    全局变量

    在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。

    全局变量可以在任何函数中使用,以下实例演示了如何使用全局变量:

    package main
    
    import "fmt"
    
    /* 声明全局变量 */
    var g int
    
    func main() {
    
       /* 声明局部变量 */
       var a, b int
    
       /* 初始化参数 */
       a = 10
       b = 20
        //调用全局变量声明的g
       g = a + b
    
       fmt.Printf("结果: a = %d, b = %d and g = %d
    ", a, b, g)
    }
    全局变量引用

    Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑。实例如下:

    package main
    
    import "fmt"
    
    /* 声明全局变量 */
    var g int = 20
    
    func main() {
       /* 声明局部变量 */
       var g int = 10
    
       fmt.Printf ("结果: g = %d
    ",  g)
    }
    
    //结果是g = 10  ,优先考虑局部变量

    形式参数

    形式参数会作为函数的局部变量来使用。

    package main
    
    import "fmt"
    
    /* 声明全局变量 */
    var a int = 20;
    
    func main() {
       /* main 函数中声明局部变量 */
       var a int = 10
       var b int = 20
       var c int = 0
    
       fmt.Printf("main()函数中 a = %d
    ",  a);
       c = sum( a, b);
       fmt.Printf("main()函数中 c = %d
    ",  c);
    }
    
    /* 函数定义-两数相加 */
    func sum(a, b int) int {
       fmt.Printf("sum() 函数中 a = %d
    ",  a);
       fmt.Printf("sum() 函数中 b = %d
    ",  b);
    
       return a + b;
    }
    形式参数

    初始化局部和全局变量

    不同类型的局部和全局变量默认值为:

    数据类型初始化默认值
    int 0
    float32 0
    pointer nil
  • 相关阅读:
    codeforces C. Cows and Sequence 解题报告
    codeforces A. Point on Spiral 解题报告
    codeforces C. New Year Ratings Change 解题报告
    codeforces A. Fox and Box Accumulation 解题报告
    codeforces B. Multitasking 解题报告
    git命令使用
    shell简单使用
    知识束缚
    php 调用系统命令
    数据传输方式(前端与后台 ,后台与后台)
  • 原文地址:https://www.cnblogs.com/pyyu/p/8041671.html
Copyright © 2011-2022 走看看