天天看點

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

Go

相信大家,看到這篇文章的時候,已經自己在百度百科了解了go的發展史已經特性,再次我依然。。。。得哔哔叨一會。   ^.^

go語言的特性

go語言作為一門靜态類型開發語言,與目前的開發語言想必具備衆多 令人興奮不已的新特性。(具體興奮不興奮就不知道了,本人也是第一次看,希望通過博文與大家一起學習,一起探讨)以下的羅列有什麼不全的地方,希望大神,積極評論,留下您看出的破綻。^.^    

go語言的主要特性:

  自動垃圾回收機制

所謂的垃圾回收機制,即所有的記憶體配置設定動作都會被在運作時記錄,同時任何對該記憶體的使用也都會被記錄,然後垃圾回收器會對 所有已經配置設定的記憶體進行跟蹤監測,一旦發現有些記憶體已經不再被任何人使用,就階段性地回收這些沒人用的記憶體,當然應為需要盡量最小化垃圾回收的性能損耗,以及降低對正常程式執行過程的影響,顯示中的垃圾回收算法要比這個複雜的多,比如對象增加年齡屬性等,但基本原理 都是如此。

  更豐富的内置類型

  除了很多語言都支援的内置類型(比如整數,浮點數)等等。go語言也内置了一些比較新的語言中内置的進階類型,比如,數組,字元串,除此之外,go語言還内置了一個對于其他靜态類型語言通常用庫方式支援的字典類型(map),另外還有一個新增的資料類型,數組切片(slice),我們可以認為數組切片是一種可動态增長的數組,這幾種資料結構基本上覆寫了絕大部分的應用場景。

  函數多傳回值

  go語言革命性地在靜态開發語言陣營中率先提供了多傳回值功能,這個特性讓開發者可以從原來用各種比較别扭的方式傳回多個值得痛苦中解脫出來,既不用再區分參數清單中那幾個用于輸入,那幾個用于輸出,也不用再為傳回多個值專門定義一個資料結構。函數的傳回值,并不是每個傳回值必須得指派,沒有被明确指派的傳回值保持預設的空值。

  錯誤處理

  (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語言開發的內建開發環境。