一塊兒來學Go --- (go的簡介以及環境的安裝)

Go

相信你們,看到這篇文章的時候,已經本身在百度百科瞭解了go的發展史已經特性,再次我依然。。。。得嗶嗶叨一會。   ^.^java

go語言的特性

go語言做爲一門靜態類型開發語言,與當前的開發語言想必具有衆多 使人興奮不已的新特性。(具體興奮不興奮就不知道了,本人也是第一次看,但願經過博文與你們一塊兒學習,一塊兒探討)如下的羅列有什麼不全的地方,但願大神,積極評論,留下您看出的破綻。^.^    算法

go語言的主要特性:編程

  自動垃圾回收機制windows

所謂的垃圾回收機制,即全部的內存分配動做都會被在運行時記錄,同時任何對該內存的使用也都會被記錄,而後垃圾回收器會對 全部已經分配的內存進行跟蹤監測,一旦發現有些內存已經再也不被任何人使用,就階段性地回收這些沒人用的內存,固然應爲須要儘可能最小化垃圾回收的性能損耗,以及下降對正常程序執行過程的影響,顯示中的垃圾回收算法要比這個複雜的多,好比對象增長年齡屬性等,但基本原理 都是如此。數組

  更豐富的內置類型安全

  除了不少語言都支持的內置類型(好比整數,浮點數)等等。go語言也內置了一些比較新的語言中內置的高級類型,好比,數組,字符串,除此以外,go語言還內置了一個對於其餘靜態類型語言一般用庫方式支持的字典類型(map),另外還有一個新增的數據類型,數組切片(slice),咱們能夠認爲數組切片是一種可動態增加的數組,這幾種數據結構基本上覆蓋了絕大部分的應用場景。數據結構

  函數多返回值閉包

  go語言革命性地在靜態開發語言陣營中率先提供了多返回值功能,這個特性讓開發者能夠從原來用各類比較彆扭的方式返回多個值得痛苦中解脫出來,既不用再區分參數列表中那幾個用於輸入,那幾個用於輸出,也不用再爲返回多個值專門定義一個數據結構。函數的返回值,並非每一個返回值必須得賦值,沒有被明確賦值的返回值保持默認的空值。併發

  錯誤處理ide

  (defer、panic、recover)這三個關鍵字用於標準的錯誤處理流程。

  go語言的錯誤處理機制能夠大量減小代碼量,讓開發者也無需僅僅爲了程序安全性而添加大量一層套一層的  try -  catch語句。

  匿名函數和閉包

  在go語言中,全部的函數也是值類型,能夠做爲參數傳遞。

  類型和接口

  go語言中的類型定義很是接近於C語言中的結構 (struct),甚至直接沿用了struct關鍵字,想必而言,go語言並無直接沿襲C++和Java的傳統去設計一個超級複雜的類型系統,不支持繼承和重載,而只是支持了最基本的類型組合功能。

  併發編程

  go語言引入了goroutine概念,它使得併發編程變得很是簡單,經過使用goroutine而不是裸用操做系統的併發機制,以及使用消息傳遞來共享而不是使用共享內存來通訊,go語言讓併發編程變得 更加輕盈和安全。

  反射

  反射(reflection)是在java語言出現後迅速流行起來的一種 概念,經過反射,你能夠獲取對象類型的詳細信息,並可動態操做對象,反射是把雙刃劍,功能強大但代碼可讀性並不理想。

  語言交互性

  因爲go語言與C語言之間的天生聯繫,go語言的設計者們天然不會忽略如何重用現有C模塊的這個問題,這個功能直接被 命名爲Cgo,Cgo是語言的特性,同時也是一個工具名稱。

在go代碼中,能夠按Cgo的特定語法混合編寫C語言代碼,而後Cgo工具能夠將這些混合的C代碼提取並生成對於C功能的調用包裝代碼,開發者基本上能夠徹底忽略這個go語言和C語言的邊界是如何跨越的。

開發工具的選擇

Goole並無隨着go 1的發佈推出官方的go集成開發工具(ide),所以開發者須要自行考慮和選擇合適的開發工具,目前比較流行的開發工具以下:

文本編輯工具   gedit(Linux)      Notepad++(windows)     Fraise(Mac OS X)

安裝了goClipse插件的Eclipse,集成性作的很好。

Vim/Emacs,萬能開發工具。

LiteIDE,一款專門爲go語言開發的集成開發環境。

相關文章
相關標籤/搜索