天天看點

go簡介(一)

1.用 Go 解決現代程式設計難題

  1.1 在快速開發和性能之間做出選擇?

        go不僅提供了高性能,同時也讓開發更快速。C/C++這類語言提供了很快的執行速度,而Ruby/Python 這

        類語言則擅長快速開發。

  1.2 go語言内置并發機制

        Go語言對并發的支援是這門語言最重要的特性之一。goroutine很像線程,但是它占用的記憶體遠少于線程

        使用它需要的代碼更少。

        channel是一種内置的資料結構,可以讓使用者在不同的goroutine之間同步發送具有類型的消息。這讓程式設計

        模型更傾向于在 goroutine之間發送消息,而不是讓多個goroutine争奪同一個資料的使用權。

  1.3 go編譯速度快

          Go語言使用更加智能的編譯器,簡化解決依賴的算法,go編譯器隻會關注那些直接被引用的庫,而不是

        像 Java/C/C++那樣,要周遊依賴鍊中所有依賴的庫。

  1.4 Go語言的類型系統簡單且高效

        不需要為面向對象開發付出額外的心智,讓開發者能專注于代碼複用。

  1.5 go語言還自帶垃圾回收器

        不需要使用者自己管理記憶體。

2.goroutine

    goroutine是可以與其他goroutine并行執行的函數,同時也會與主程式(程式的入口)并行執行。在其他程式設計語

    言中,你需要用線程來完成同樣的事情,而在Go語言中會使用同一個線程來執行多個goroutine。

3.channel

    通道是一種資料結構,可以讓 goroutine 之間進行安全的資料通信。通道可以幫使用者避免其他語言裡常見的共享

    記憶體通路的問題。通道這一模式保證同一時刻隻會有一個goroutine修改資料。通道用于在幾個運作的goroutine之

    間發送資料。

go簡介(一)

4.go語言的類型系統

    4.1 類型簡單

        Go語言提供了靈活的、無繼承的類型系統,無需降低運作性能就能最大程度上複用代碼。Go開發者使用組合設

        計模式,隻需簡單地将一個類型嵌入到另一個類型,就能複用所有的功能。一個類型由其他更微小的類型組合

        而成,避免了傳統的基于繼承的模型。不過 Go 語言的類型可以聲明操作該類型資料的方法。

    4.2 Go接口對一組行為模組化

        Go語言還具有獨特的接口實作機制,允許使用者對行為進行模組化,而不是對類型進行模組化。

        Go語言的接口更小,隻傾向于定義一個單一的動作。傳統的面向對象程式設計語言的接口系統有本質的差別。

        Go語言的整個網絡庫都使用了 io.Reader 接口,将程式的功能和不同網絡的實作分離。

總結: