上周開始學習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語言比較深入的東西,比如並發