Golang範圍—坑

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

先舉個栗子,全域範圍變數,與 := 標記法宣告賦值新變數

package mainimport "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 mainimport "fmt"func main() {   /* 聲明局部變數 */   var a, b, c int    /* 初始化參數 */   a = 10   b = 20   c = a + b   fmt.Printf ("結果: a = %d, b = %d and c = %d\n", a, b, c)}
局部變數聲明

全域變數

在函數體外聲明的變數稱之為全域變數,全域變數可以在整個包甚至外部包(被匯出後)使用。

全域變數可以在任何函數中使用,以下執行個體示範了如何使用全域變數:

package mainimport "fmt"/* 聲明全域變數 */var g intfunc main() {   /* 聲明局部變數 */   var a, b int   /* 初始化參數 */   a = 10   b = 20    //調用全域變數聲明的g   g = a + b   fmt.Printf("結果: a = %d, b = %d and g = %d\n", a, b, g)}
全域變數引用

Go 語言程式中全域變數與局部變數名稱可以相同,但是函數內的局部變數會被優先考慮。執行個體如下:

package mainimport "fmt"/* 聲明全域變數 */var g int = 20func main() {   /* 聲明局部變數 */   var g int = 10   fmt.Printf ("結果: g = %d\n",  g)}//結果是g = 10  ,優先考慮局部變數

形式參數

形式參數會作為函數的局部變數來使用。

package mainimport "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\n",  a);   c = sum( a, b);   fmt.Printf("main()函數中 c = %d\n",  c);}/* 函數定義-兩數相加 */func sum(a, b int) int {   fmt.Printf("sum() 函數中 a = %d\n",  a);   fmt.Printf("sum() 函數中 b = %d\n",  b);   return a + b;}
形式參數

 

初始化局部和全域變數

不同類型的局部和全域變數預設值為:

資料類型 初始化預設值
int 0
float32 0
pointer nil

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.