GoLang 變數範圍

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

GoLang 變數範圍

在 Golang 中,變數範圍分為:

  • 本地局部變數
  • 全域變數
  • 參數變數

本地局部變數

定義:在函數或者在語義塊(if/for等)中定義的變數
生效範圍:定義在函數裡面則在整個函數範圍有效; 定義在語義塊,則在整個語義塊生效

執行個體如下:

//str 定義在函數內,因此它是一個本地局部變數//str 僅僅在 Test函數內有效,出了這個函數無效func Test(){    str := "This is a local var"}// str1 定義在語義塊 for 裡面,因此它也是一個本地局部變數// str1 僅僅在 for 迴圈語句裡面生效,出了這個語義塊不可見func Test1(){    for{        str1 := "This is yet a local var in block"        ...    }}//if 語義塊輸出 "block var"; 末尾輸出 "local var"//注意範圍的優先順序(當變數名相同時,會優先使用當前範圍的變數)func Test2(){    str := "local var"    if true {        str := "block var"        fmt.Println(str)    }    fmt.Println(str)}

全域變數

定義:函數外部定義的變數都屬於全域變數;全域變數聲明必須以 var 開頭
生效範圍:當前 package 內,如果想要其他 package 訪問,全域變數以大寫開頭

//此處例子全域變數值為20var g intfunc test(){    a := 10    b := 10    //千萬不要使用 g := a+b 這個是在 main 裡面建立了一個新的局部變數 g    g = a+b    ...}//此處全域變數g1仍然為零值 0,而同名的局部變數 g1(:= 文法是定義一個新的變數且初始化) 為20var g1 intfunc test1(){    a := 10    b := 10    g1 := a + b}

參數變數

定義:函數調用時傳遞的變數
生效範圍:函數範圍(但是有可能會可變傳入參數的值,取決於傳遞的參數的類型)

//str 是參數變數//i 是局部變數//兩者區別:參數變數的賦值是在函數外部完成的(調用函數時);參數變數聲明後可以不使用,局部變數聲明不使用編譯錯誤//大部分情況下,參數變數和局部本地變數是一樣的func Test(str string){    i := 1}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.