Go語言學習筆記1 變數,類型以及賦值

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

1.變數

1.1 聲明變數

使用var關鍵字可以建立一個指定類型的變數:

var i int = 0var i = 0var i int

以上三個運算式均是合法的,第三個運算式會將i初始化為int類型的零值,0;如果i是bool類型,則為false;i是float64類型,則為0.0;i為string類型,則為"";i為interface類型,則為nil;i為參考型別,則為nil;如果i是struct,則是將struct中所有的欄位初始化為對應類型的零值。

可以在同一條語句中聲明多個變數:

var i, j, k int                 // int, int, intvar b, f, s = true, 2.3, "four" // bool, float64, string

 

包內可見的變數在main函數開始執行之前初始化,本地變數在函數執行到對應的聲明語句時初始化。

變數也可以通過函數的傳回值來初始化:

var f, err = os.Open(name) // os.Open returns a file and an error  

1.2 短聲明

在函數內部,有一種短聲明的方式,形式是name := expression,這裡,變數的類型是由編譯器自動確定的。

anim := gif.GIF{LoopCount: nframes}freq := rand.Float64() * 3.0t := 0.0

因為這種形式非常簡潔,因此在函數內部(本地變數)大量使用。如果需要為本地變數顯式的指定類型,或者先聲明一個變數後面再賦值,那麼應該使用var

1 i := 100                  // an int2 var boiling float64 = 100 // a float643 var names []string4 var err error5 var p Point

就像var聲明一樣,短聲明也可以並行初始化

i, j := 0, 1  

要謹記的是,:=是一個聲明,=是一個賦值,因此在需要賦值的場所不能使用 :=

 

1 var i int  2 i := 10//panic : no new variables on left side of :=  

 

可以利用並行賦值的特性來進行值交換:

1 i, j = j, i // swap values of i and j  

有一點需要注意的:短聲明左邊的變數未必都是新聲明的!

1 in, err := os.Open(path1) //新聲明兩個變數:in, err  2 //...  3 out, err := os.Create(path2)   4 /*因為err已經聲明過,因此這裡只新聲明一個變數out。 5 雖然這裡使用:=,但是err是在上個語句聲明的,這裡僅僅是賦值*/  

而且,短聲明的左邊變數必須有一個是新的,若都是之前聲明過的,會報編譯錯誤:

1 f, err := os.Open(infile)  2 // ...  3 f, err := os.Create(outfile) // compile error: no new variables 

正確的寫法是這樣的:

1 f, err := os.Open(infile)  2 // ...  3 f, err = os.Create(outfile) // compile ok  

1.3 指標

 

  1. f, err := os.Open(infile)  
  2. // ...  
  3. f, err = os.Create(outfile) // compile ok  
相關文章

聯繫我們

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