回覆列表
-
1 # 善水老師IT微課堂
-
2 # 噠噠噠哦啦哦啦
如果是學生的話,系統性的學習go,完全值得立馬開始學習,如果在職,可以稍等半年時間再學,go語言前途很好,很明顯,最終取代java也不是不可能。不僅僅是效能好,效率高,go也有一個支援移動開發的庫在實驗階段,未來應該是後端服務與移動跨平臺均支援。但是go即將迎來大的變動,也就是說目前還不穩定,所以如果是系統性的學習,沒有問題,如果是急於跳槽找工作,想快速上手,還是再等等,後面的新版本的go會更易於使用。
已經有好多程式設計師都把Go語言描述為是一種所見即所得(WYSIWYG)的程式語言。這是說,程式碼要做的事和它在字面上表達的意思是完全一致的。 在這些新語言中,包含D,Go,Rust和Vala語言,Go曾一度出現在TIOBE的排行榜上面。與其他新語言相比,Go的前景要好的多。
Go的成熟特徵得到許多開發者的欣賞,快速簡單的編譯 Go編譯速度很快,如此快速的編譯使它很容易作為指令碼語言使用(Go不使用標頭檔案)。只需要簡單地編譯主模組,專案中需要的其他部分就會自動編譯,Go允許函式返回多個值來解決這個問題。這個從函數里面返回的值,可以用來檢查定義的型別是否正確並且可以隨時隨地對函式的返回值進行檢查。
簡化的併發性,相對於其他語言,併發性在Go裡面顯得更加容易。把‘go’關鍵字放在任意函式前面然後那個函式就會在其go-routine自動執行(一個很輕的執行緒)。go-routines是透過通道進行交流並且基本上封鎖了所有的佇列訊息。普通工具對相互排斥是有用,但是Go透過使用通道來踢掉併發性任務和座標更加容易。 優秀的錯誤訊息 所有與Go相似的語言,自身作出的診斷都是無法與Go相媲美的。 其他還有許多吸引人的地方,比如高階函式、垃圾回收、雜湊對映和可擴充套件的陣列內建語言(部分語言語法,而不是作為一個庫)等等。
當然,Go並不是完美無瑕。在工具方面還有些不成熟的地方和使用者社群較小等,但是隨著谷歌語言的不斷髮展,肯定會有整治措施出來。儘管許多語言,尤其是D、Rust和Vala旨在簡化C++並且對其進行簡化,但它們給人的感覺仍是“C++看上去要更好”。
但是GO語言的優勢也是明顯的,比如說可直接編譯成機器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個檔案上去就完成了。
靜態型別語言,但是有動態語言的感覺,靜態型別的語言就是可以在編譯的時候檢查出來隱藏的大多數問題,動態語言的感覺就是有很多的包可以使用,寫起來的效率很高。
語言層面支援併發,這個就是Go最大的特色,天生的支援併發,可以充分的利用多核,很容易的使用併發。
內建runtime,支援垃圾回收,這屬於動態語言的特性之一吧,雖然目前來說GC不算完美,但是足以應付我們所能遇到的大多數情況,特別是Go1.1之後的GC。
簡單易學,Go語言的作者都有C的基因,那麼Go自然而然就有了C的基因,那麼Go關鍵字是25個,但是表達能力很強大,幾乎支援大多數你在其他語言見過的特性:繼承、過載、物件等。
豐富的標準庫,Go目前已經內建了大量的庫,特別是網路庫非常強大,我最愛的也是這部分。
內建強大的工具,Go語言裡面內建了很多工具鏈,最好的應該是gofmt工具,自動化格式化程式碼,能夠讓團隊review變得如此的簡單,程式碼格式一模一樣,想不一樣都很困難。
跨平臺編譯,如果你寫的Go程式碼不包含cgo,那麼就可以做到window系統編譯linux的應用,如何做到的呢?Go引用了plan9的程式碼,這就是不依賴系統的資訊。
內嵌C支援,聽說作者是C的作者,所以Go裡面也可以直接包含c程式碼,利用現有的豐富的C庫。
我還是很看好GO語言的發展的。