91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言變量的作用域是什么

發布時間:2023-02-06 11:25:56 來源:億速云 閱讀:135 作者:iii 欄目:編程語言

這篇“go語言變量的作用域是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“go語言變量的作用域是什么”文章吧。

go語言變量有2種作用域:1、局部變量,是在函數級別和塊級別內聲明的變量;局部變量只能在它們的塊或函數中訪問,已經聲明的局部變量不能在同一塊或函數中重新聲明。2、全局變量,是在包級別聲明的變量;全局變量在程序的整個生命周期中都可用,不能使用“:=”運算符聲明全局變量。

變量聲明的位置

Go語言變量聲明的位置有三種級別:

  • 包(package)級別:變量在函數外聲明

  • 函數級別:變量在函數內,包括函數的傳參參數變量,但在代碼塊外聲明

  • 塊級別:這個分兩種,一種是顯式,會使用大括號{}括起來的代碼;另一種是隱式,如for,if后的初始化表達式。

變量位置示例

package main

import "fmt"

var test = "test"  //在函數外,包級別變量

func main() {
    a, b := 1, 2  //a和b,c在main函數內定義,函數級別變量
    c := sum(a, b)
    fmt.Println(c)
    fmt.Println(test)

    for i := 0; i < 10; i++ {   //i為for循環內定義,為隱式塊級別變量
        var d = i + 1    //d在for的循環體內,以大括號{}括起來,為顯式塊級別變量
        fmt.Println(d)
    }

}

func sum(a, b int) int {   //函數參數a和b,在函數內定義,為函數級別變量
    fmt.Println(a)
    fmt.Println(b)
    nu := a + b
    return nu
}

變量作用域

變量聲明的位置決定了變量允許在什么地方被訪問以及變量的聲明周期。變量的可訪問范圍稱為變量的作用域。Go語言中,變量的作用域分為兩類:

  • 局部變量,也稱為本地變量

  • 全局變量

局部變量

在函數級別和塊級別內聲明的變量為局部變量。局部變量有以下特征:

  • 局部變量只能在它們的塊或函數中訪問。

  • 局部變量的生命周期只到塊或聲明它們的函數的末尾。之后,它們被垃圾回收器回收。

  • 已經聲明的局部變量,不能在同一塊或函數中重新聲明。

示例:

package main

import "fmt"

func main() {
    var a= "astrng"
    fmt.Println(a)
    for i := 0; i < 10; i++ {
        fmt.Println(i)
    }
    fmt.Println(i)
}

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

這個代碼編譯時會報錯:

undefined: i
undefined: a

原因:

i:為for循環體內的塊級別的局部變量,在定義它的for循環體外訪問,就會報undefined。

a:為main函數級別的局部變量,在testLocal函數內無法訪問,會報undefined錯誤。

全局變量

在包級別聲明的變量為全局變量。全局變量有以下特征:

  • 全局變量以小寫開頭時,此全局變量只能在定義它的包(package)內使用。即變量在包內可見。

  • 全局變量以大寫開頭時,此全局變量可以跨不同包(package)之間使用。即變量在所有地方可見。

  • 全局變量在程序的整個生命周期中都可用。

  • 不能使用:=運算符聲明全局變量。

package main

import "fmt"

var a = "astring"

func main() {
    testGlobal()
}

func testGlobal() {
    fmt.Println(a)  //運行結果是,正確打印出a的值“astring”
}

局部變量和全局變量同名

Go語言程序中全局變量與局部變量名稱可以相同,但是函數體內的局部變量會被優先考慮。

package main
import "fmt"
//聲明全局變量
var a float32 = 3.14
func main() {
    //聲明局部變量
    var a int = 3
    fmt.Printf("a = %d\n", a)
}

運行結果如下所示:

a = 3

Go語言是運行局部變量和全局變量同名,同名的變量在局部作用域范圍,它將遮蔽外部作用域中的變量。

package main

import "fmt"

var a = "globala"

func main() {
    var a = "locala"
    fmt.Println(a)  //此處的a會遮蔽外面定義的a全局變量,輸出locala
}
func testGlobal() {
  fmt.Println(a)  //此處是全局變量a,輸出globala
}

go語言變量的作用域是什么

以上就是關于“go語言變量的作用域是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

日照市| 金秀| 淳化县| 中牟县| 布拖县| 花莲县| 襄汾县| 商都县| 常州市| 广德县| 宜昌市| 云和县| 北辰区| 双桥区| 绥中县| 陕西省| 南康市| 新巴尔虎左旗| 读书| 双桥区| 固阳县| 丰顺县| 阿荣旗| 邳州市| 孝感市| 施秉县| 特克斯县| 菏泽市| 比如县| 清徐县| 抚顺市| 鞍山市| 赤峰市| 宣化县| 体育| 淳化县| 绥宁县| 临清市| 突泉县| 玉门市| 石渠县|