讓我們一起Go(五)

來源:互聯網
上載者:User
前言

轉眼間,已經2013年了,新的一年,還是繼續學習Go啊,本系列不小心跨年了,哈哈哈。上篇中我們初步瞭解了Go語言的變數聲明,今天我們首先還是要繼續聊聊變數。文章更新較慢,請諒解,因為公司項目太忙,白Apsara Infrastructure Management Framework本沒時間,晚上抽空寫的,且本人水平有限,難免有不對之處。

一、再談Go語言變數

上篇中,我們知道在Go語言中是通過var 關鍵字來聲明變數的,那麼聲明變數,我們沒有給變數賦值,那些變數是否有初始值呢?

為了證明這點,其實很容易,你只要寫些代碼,然後列印出來就可以了。下面測試一部分資料:

 1 package main 2 import "fmt" 3 func main(){ 4     var a int 5     var b float32 6     var c bool 7     var d string 8     var e []int 9     var f map[string] int10     var g *int11     if nil == e{12         fmt.Print("e is nil \n")13     }14     if nil == f{15         fmt.Print("f is nil \n")16     }17     fmt.Print(a,b,c,d,e,f,g)18 }

 

通過上面的例子,我們已經明確了Go語言聲明的變數預設是有初始值的。大致分成以下幾種:
1.int int32 int64 -> 0

2.bool -> false

3.float32 float64 ->0.0

4.pointer(指標) map array slice ... -> nil

在Go語言中也可以一次聲明多個變數:

var a,b,c int

如果是不同類型的變數則可以這樣:

var (

  a int

  b bool

)

當然也可以直接聲明並初始化多個變數:

var a,b,c int = 1,2,3

var a int ,c bool = 1,false

為了簡化,也可以使用類型推斷的特性,如下聲明初始化:

var a,b = false,"am"

a,b := true,3

以上只是對Go語言中最簡單的幾種類型的聲明初始化做了介紹,更複雜的類型,例如數組,map,函數,介面等,將在後續中詳細講到這一類型再做介紹,因為,如果這裡就介紹,又會使得本篇長度變長,內容過多,本著一貫的簡短宗旨,所以請耐心等等。

二、Go語言的基本類型

                 type                     length                    des

  1. bool                       1                        true, false。==========不能把⾮零值當作 true 。

  2. byte                       1                        uint8 別名

  3. rune                       4                        int32  別名。代表⼀個 Unicode  Code Point。int/uint 依據所運⾏的平台,可能是 32bit 或 64bit。

  4. int8/uint8                1                       -128 ~  127; 0  ~  255

  5. int16/uint16            2                      -32768  ~  32767; 0  ~  65535int32/uint32 4 -21 億 ~  21億,  0  ~  42億

  6. int64/uint64            8

  7. float32                    4                       精確到 7  個⼩數位

  8. float64                    8                       精確到 15 個⼩數位

  9. complex64               8

  10. complex128            16

  11. uintptr                                             ⾜夠儲存指標的 32 位或 64 位元整數

  12. array                                               實值型別 如:[2]int

  13. struct                                              實值型別

  14. string                                              實值型別

  15. map                                                引⽤類型

  16. channel                                           引⽤類型

  17. slice                                                引⽤類型 如:  []int

  18. interface                                          接⼝類型

  19. function                                            函數類型

 

 哇,上面好大一堆,不過沒關係。大部分還都是很熟悉的,如果你寫過其它語言的話,至於不熟悉的那些,在今後的日子裡,將會逐一攻破,至於簡單的,這裡也不將細說,因為實在沒啥好說的,就像你的名字一樣,你為什麼叫這個名字?好吧,可以扯你的祖先姓氏開始,再扯名字含義,當然變數也可以扯,可以扯到記憶體......但對於現在來說意義不大,所以關於變數的基礎今天就到這裡了,如果你已經忍不住了可以去網上查閱更多資料。

三、變數類型轉換

講完各種變數,當然也得講講他們之間如何轉換的。記住在Go語言中,不支援隱式轉換,需要你指明。就像下面一樣:

var a int = 2

var b float64 = float64(a)

 規則很簡單 就是 <你需要轉換的類型>(原始變數)

是不是很簡單?其它類型請自行嘗試,我太懶了不想這裡做機械的重複。

 

四、常量

說完變數再來說說常量,常量就如它名字一樣,正常的量?當然不是,哈哈,常量其實可以理解為就是不是變數(……*&&……一堆人開罵)其實簡單的說,常量是指在程式運行過程中,其值不可改變的量.

那麼如何聲明定義常量,看下面:

1 const x int32 = 1992 const y = "Hello"3 const a, b, c = "apple", true, "jobs"  4 const (5     male= "jack"6     fmale = false7 )

今天就到這裡,希望對大家有協助。

 

相關文章

聯繫我們

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