這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
go語言自己接觸的時間也不是很長,第一次是在什麼情況下認識它的,我記得已經不是很清楚了,但那時我知道,這門語言值得我去學習和深入的瞭解,至於為什麼,我想自己可能也描述不出來,那我們就來看看它在別人心中具體是什麼樣的一門語言,它與我們學的vb、c/c++、java、c#靜態語言及php、python、ruby等動態語言有什麼樣的不同之處。
1.簡約的語言風格設計。go語言關鍵字少,而且很多文法使用方式與其他語言相比大有不同,go語言設計者覺得,代碼似乎已經漸漸成了軟體設計前行的一大障礙,我們需要在編碼上浪費大量的時間,因此有了這麼精簡的文法結構,把能省略的盡量省略,而且制定了更標準的規範,以達到高效簡單的目地。
2.物件導向的不同體現方式。因為自己剛開始接觸C和C++相對較多,有過從面相過程編程到物件導向編程的一個思想轉變,但是從軟體設計和迭代的曆程來看,物件導向產生是因為隨著互連網及軟體研發技術的發展,單純的面向過程編程已經不能解決比較複雜的業務結構,編寫的難度越來越大,不能高效率的達到我們的要求。所以最近十多年裡,物件導向幾乎深深刻在了每個程式員的心中,似乎沒有了物件導向程式就失去了靈魂。其實,隨著軟體的繼續深入發展物件導向也早晚會有淘汰的一天,我們需要跳出來,找找其他思路,而go語言的先驅者正給了我們一種這樣的思路,以另一種方式融合了物件導向的有點,同時增加了一些新的元素。雖然對於這種方式的編程不同人持不同觀點,但好與壞還是需要時間的驗證。
3.對並行編程和分布式編程高效支援。go語言在多線程上增加了關鍵字go,共用上類比了linux的管道,多了關鍵字channel,使用他們,多線程的編寫難度將大大降低。
4.最為人稱道的是go語言中的interface設計,不同於java和c#中的interface,與c++的模版倒有一些相似之處。至於為什麼說它這麼優秀,自己暫時對他的理解也不夠,還得在實踐中才能多多體會。
5.go的錯誤處理規範,有其他語言相比雖有異曲同工之處,但有很大的不同之處。go引入了error和defer關鍵字,能協助我們更好的編寫異常安全的代碼。
6.go的功能內聚,此功能與其他語言中的繼承相似,不過go中還能組合指標。
7.go語言效率高,能與C語言媲美,並且對C完全支援,現主要關注伺服器領域的開發。
關於go的優劣好壞,眾說不一,各有道理,選擇是否學習這門語言,其實完全看個人愛好,聽自己的准沒錯。
是否學習這門語言,其實完全看個人愛好,聽自己的准沒錯。