go語言基礎學習二

上週開始學習go語言,到不是感覺很難,也許從一種語言直接過渡到另外一種語言確實是需要時間的。在dos下敲了一天半的代碼,實在是煩透了,單調枯燥,也沒有提示如果有錯誤要一行行看,也許是使用可視化工具習慣了,在黑窗口裏工作總是感覺非常不爽。在老大給我們的幫助資料中,我翻啊翻,終於找到了貌似是一種可視話的工具liteIDE.按照找到的資料,將其配置好,再用來寫程序,真是愜意好多呀,而且有智能提示,彷彿寫程序快樂了很多。

http://download.csdn.net/detail/lxy15329/4735111 這文檔是我無意中發現的,讓我重新找到了編程的樂趣。

      言歸正傳,說下今天的收穫吧。

     今天又把電子書從頭讀了一遍,當然沒有讀到尾,讓我一天只幹一件事情是比較困難的,因爲我害怕枯燥,激情耗盡便再也不想幹了。電紙書已經讀了一大半了,剩下的部分是go的精髓。基礎差不多了吧,大多數語言的套路都是如此,只需要熟悉下一些不同之處而且過人之處便算是掌握了基礎了。

    首先是關於字符串。

   對於多行字符串的書寫。eg:

str := "hello"
         + "world"

這樣是有問題的,因爲go會將其解析爲:

str := "hello";

     +"world";

這顯然是不對的。要不說嘛,go自動給加分號,說到底是按照一套程序來完成的,人只能去遵循這套程序,而不能按照自己的想法來指揮程序完成。有兩種辦法可以解決,一種是按照這種方式:

str := "hello"+

           "world"

或者是使用反引號`

即  str :=`hello

                     world`

但是這樣寫會將換行符和各種空格包含進來。

  格式化輸出:今天真是囧大了,因爲寫了一上午程序,自己還納悶呢,怎麼go中%c直接顯示出來了,而不是顯示字符呢。由於是在liteIDE中開發,好多都是有提示的,所以,自己也沒注意,一直使用的是printf還是println。一直到下午看文檔,才明白,原來上次因爲是在dos下執行,所以使用的是printf,格式化輸出,而今天,輸入fmt之後就直接按回車了,只知道是輸出,但是具體調用的是哪個函數確實是沒放在心上。想想真是的,還好沒有一直去思考這個問題,要不然,恨不得踹自己兩腳。

   關於map的使用,到現在我還存在疑惑,因爲有一個語句沒執行成功,這個待到以後繼續解決。

上例子:

   week := map[string] int{

 "monday":1,"tuesday":2,"wednesday",3,

}

注意,最後的逗號是必須的,是萬萬不能缺失的。

可能你只想要這個map種的值,而不需要鍵。可以這樣:

for  _,days :=range week{

//do something

}

_得到值之後就將其捨棄了,正好達到用途。

如果想往map中添加項,很簡單,week["thursday"]=4

若要修改,只需要直接賦值就可以了 week["thursday"]=0

若要判斷元素是否存在

v,ok := week["thursday"],若存在,則ok的值爲true,否則爲false

在map中當然也能刪除元素,delete(week,"thursday")就可以了


關於函數和自定義的類型。這個其實也不難,只是有些地方需要多加註意。自己添加的包中有函數,如果函數名字是大寫字母開頭,則是可以導出的,在其他包中可以調用,如果是小寫字母,只能在內部調用。這個總感覺很不適應,幹嘛弄這麼麻煩啊,而且經常寫着寫着就忘了,怎麼記得住什麼情況啊。上午折騰了大半天,才恍然大悟。同樣,關於自己定義的type,也是跟大小寫有關係的。

 type Student struct{

  name  string

  age int

}

使用時候可以採用兩種方式:

一:stu :=new (Student)

      stu.name="lxy"

     stu.age=11

二。stu :=new Student{"lxy",13}  //注意,是大括號,開始老是使用圓括號,坑苦我了呀

值得一提的是,go中的函數的返回值可以不止一個,這是個值得稱道的地方,寫法很簡單,我就不舉例子了。

明天繼續學習go語言比較深入的東西,比如併發

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章