本系列還沒流產,繼續難產中,哈哈,只怪我沒專心,在期間又偷偷去學了python,ruby,scala,haskell這幾種語言,若是你不幸是本系列的讀者,那麼你得慢慢等後面的了,等不及能夠過幾年再來看看啊^_^。由於,Go語言沒那麼迫切須要用到,並且我的興趣比較普遍,要玩的東西太多了,天然暫時沒法一口氣完成Go的學習。對於讀者,只能說很是抱歉啦。廢話很少說了,今天補上一篇。java
在Go語言中經過關鍵字const來定義枚舉,const以前咱們也遇到過,它用來定義常量,小樣還挺厲害,還能定義枚舉:
python
上面的例子中,定義了一個關於星期的枚舉,當打印Friday時候輸出5。打印Sunday輸出0。其實,在Go語言中,枚舉彷佛就是常量一種特殊形式,只不過在上述代碼中出現了關鍵字iota,這個是一個很是有用的東西,能夠幫你省寫不少東西,在上面他會初始化爲0,而後每一行就會增長1,所以能夠認爲是一個自增量。因而咱們就沒必要這樣寫了:Sunday=1 Monday=2……一個iota幫你解決一切煩惱,並且在後續中還能對iota進行操做:例如能夠Monday = iota*2因而Monday就等於2了。上面說到一行定義一個iota會自增賦值給常量,那麼能夠一行定義多個嗎?答案是能夠,可是必須得明確指定值,否則會報錯:
編程
發現上面枚舉的值都是整數,固然其它類型的也能夠,只要相應的賦值就好了,如Sunday = "sun"。ruby
結構體,對於學過C語言的應該很熟悉,對於C這樣的語言,沒有類的概念,結構體在很大程度上是做爲封裝的主要方式,那麼在Go語言中。結構體又是如何的呢?請往下看:
學習
發現和c語言差很少麼,若是仔細看你會發現結構體中的Name首字母N是大寫的,而age的首字母a是小寫的。這可不是隨便的哦。雖然這裏我是隨便的。在Go語言中若是結構的Field首字母大寫,那麼它是public的,能夠在package外訪問。而age首字母是小寫的,那麼它只能在本package中被訪問。是否和java中類的字段用private關鍵字或者public定義相似呢?
上述代碼中咱們聲明並初始化st變量是一塊兒進行的,固然也能夠分開:spa
還有一種方式能夠這樣:scala
ok,今天就都這裏,之後再繼續,讓咱們一塊兒GoGoGo,享受編程的快樂......io