Go語言大約從2007年開始構想,最初是由谷歌公司的幾位工程師設計的。Go語言的設計初衷是為了解決當時較流行的C++、Java等開發語言過於複雜而低效的問題。
2009年11月10日,Go語言被正式轉為開源專案,這一天也被認為是Go語言正式的誕生日。
2012年,Go語言釋出了第一個正式版本1.0。到目前為止,Go語言最新的版本是1.14。
Go語言的主要特點包括:
* 輕量級、效能優異,編譯執行,程式碼執行效率接近於C,書寫難易度確接近於C++/Java等高階語言;
* 內建豐富的標準庫;
* 完全免費並開源;
* 真正的跨平臺,並且都是原生程式碼執行,無需虛擬機器或直譯器;支援跨平臺編譯;Go語言主要支援Windows、MacOS、LinuxGo這幾個作業系統平臺;
* 語法簡約而嚴謹,可以有效避免程式設計師很多常見的書寫錯誤;
* 語言層面上就支援的原生高效的併發處理機制;
* 用心設計的指標操作,可以避免C/C++等語言常見的指標用法錯誤和記憶體洩漏;
* 獨特的記憶體管理和自動垃圾回收機制,據說效率比其他一些語言更高;
* 用特殊方式完整支援面向物件程式設計,既保留了面向物件程式設計中最重要的一部分,又避免了較為複雜導致的效率不高的問題;主要的面向物件程式設計的特性在Go語言中都可以用較輕巧的方式實現;
* 具備豐富的網路程式設計功能,尤其是伺服器端的開發支援;
* 獨具一格的異常處理機制,這一點有一定的爭議,但無論如何是一種解決傳統異常處理方式的思路;
* Go語言的其他一些特性包括:透過“空介面”型別支援類似物件基類的概念;支援函式作為引數傳遞;支援匿名函式和閉包;支援反射;支援透過Cgo方式直接呼叫C語言函式庫等;
* Go語言也有一些不足之處,例如對圖形介面程式設計支援不夠好,這是因為Go語言設計之初就是以解決伺服器端處理的問題為主的。另外,對某些程式設計師來說,Go語言過於嚴格的程式碼書寫要求,也導致了一些不滿,但總的來說,帶來的避免常見程式碼書寫錯誤的好處還是值得的。
如果具備一定的C/C++語言或Java語言的基礎,Go語言學習的難度還是不大的,上手應該很快。
目前學校中開Go語言課程的很少,外面培訓班也不多,要學習主要的途徑還是一些影片課或線上課程,或者以自學為主也是可以的,靠閱讀書籍和線上文件與程式碼樣例。
如果想學,沒有問題的,抓緊時間去學,教程可以去bilibili上看,基礎學起來很簡單也很快。後面根據自身情況補C的基礎。
Go語言大約從2007年開始構想,最初是由谷歌公司的幾位工程師設計的。Go語言的設計初衷是為了解決當時較流行的C++、Java等開發語言過於複雜而低效的問題。
2009年11月10日,Go語言被正式轉為開源專案,這一天也被認為是Go語言正式的誕生日。
2012年,Go語言釋出了第一個正式版本1.0。到目前為止,Go語言最新的版本是1.14。
Go語言的主要特點包括:
* 輕量級、效能優異,編譯執行,程式碼執行效率接近於C,書寫難易度確接近於C++/Java等高階語言;
* 內建豐富的標準庫;
* 完全免費並開源;
* 真正的跨平臺,並且都是原生程式碼執行,無需虛擬機器或直譯器;支援跨平臺編譯;Go語言主要支援Windows、MacOS、LinuxGo這幾個作業系統平臺;
* 語法簡約而嚴謹,可以有效避免程式設計師很多常見的書寫錯誤;
* 語言層面上就支援的原生高效的併發處理機制;
* 用心設計的指標操作,可以避免C/C++等語言常見的指標用法錯誤和記憶體洩漏;
* 獨特的記憶體管理和自動垃圾回收機制,據說效率比其他一些語言更高;
* 用特殊方式完整支援面向物件程式設計,既保留了面向物件程式設計中最重要的一部分,又避免了較為複雜導致的效率不高的問題;主要的面向物件程式設計的特性在Go語言中都可以用較輕巧的方式實現;
* 具備豐富的網路程式設計功能,尤其是伺服器端的開發支援;
* 獨具一格的異常處理機制,這一點有一定的爭議,但無論如何是一種解決傳統異常處理方式的思路;
* Go語言的其他一些特性包括:透過“空介面”型別支援類似物件基類的概念;支援函式作為引數傳遞;支援匿名函式和閉包;支援反射;支援透過Cgo方式直接呼叫C語言函式庫等;
* Go語言也有一些不足之處,例如對圖形介面程式設計支援不夠好,這是因為Go語言設計之初就是以解決伺服器端處理的問題為主的。另外,對某些程式設計師來說,Go語言過於嚴格的程式碼書寫要求,也導致了一些不滿,但總的來說,帶來的避免常見程式碼書寫錯誤的好處還是值得的。
如果具備一定的C/C++語言或Java語言的基礎,Go語言學習的難度還是不大的,上手應該很快。
目前學校中開Go語言課程的很少,外面培訓班也不多,要學習主要的途徑還是一些影片課或線上課程,或者以自學為主也是可以的,靠閱讀書籍和線上文件與程式碼樣例。