Golang九大特性

來源:互聯網
上載者:User

強型別靜態編譯型語言。

  • 更豐富的內建類型

  • 函數多傳回值

    • 在C中如果想返回多個值,通常會在調用函數中分配傳回值的空間,並將傳回值的指標傳給被調函數。Go的做法是在傳入的參數之上留了兩個空位,被調者直接將傳回值放在這兩空位。Go是使用棧空間來傳回值的。而常見的C語言是通過寄存器來傳回值的。
  • 錯誤處理

    • defer、panic、recover
  • 匿名函數和閉包

    • Go中的函數也可以作為參數進行傳遞,擁有函數名的函數只能在包級文法塊中被聲明,而閉包是可以包含自由(未綁定到特定對象)變數的代碼塊,這些變數不在這個代碼塊內或者任何全域上下文中定義,而是在定義代碼塊的環境中定義。要執行的代碼塊(由於自由變數包含在代碼塊中,所以這些自由變數以及它們引用的對象沒有被釋放)為自由變數提供綁定的計算環境(範圍)。
  • 類型和介面

    • Go語言沒有很複雜的物件導向的概念,即沒有繼承和重載,其類型更像是C中的struct,並且直接使用了struct關鍵字,僅僅是最基本的類型組合功能。因為Go除Interface類型外的任何其它資料類型都可以定義其method,類型的方法和普通函數定義類似,只是前面多了一個對象接收者receiver,可以把Go中的struct看作是不支援繼承行為的輕量級的“類”。

    • go中的介面和C++中的純虛基類 (只有虛函數,沒有資料成員)類似,即便不是典型的oo語言,但依然可以通過介面實現OOP的多態。在Go語言中,任何實現了介面的函數的類型,都可以 看作是介面的一個實現。 類型在實現某個介面的時候,不需要顯式關聯該介面的資訊。介面的實現 和介面的定義完全分離了。如果要類比C++中類的繼承機制,可以使用匿名成員。

  • 並發編程

    • Go語言引入了goroutine概念,它使得並發編程變得非常簡單。通過使用goroutine而不是裸用作業系統的並發機制,以及使用訊息傳遞來共用記憶體而不是使用共用記憶體來通訊,Go語言讓並發編程變得更加輕盈和安全。通過在函數調用前使用關鍵字go,我們即可讓該函數以goroutine方式執行,goroutine是一種比線程更加輕盈、更省資源的協程。

    • Go語言實現了CSP(通訊順序進程)模型來作為goroutine間的推薦通訊方式,在CSP模型中,一個並發系統由若干並行啟動並執行順序進程組成,每個進程不能對其他進程的變數賦值。進程之間只能通過一對通訊原語實現協作。Go語言用channel(通道)這個概念來輕巧地實現了CSP模型。channel的使用方式比較接近Unix系統中的管道(pipe)概念,可以方便地進行跨goroutine的通訊。

    • 由於一個進程內建立的所有goroutine運行在同一個記憶體位址空間中,因此如果不同的goroutine不得不去訪問共用的記憶體變數,訪問前應該先擷取相應的讀寫鎖。Go語言標準庫中的sync包提供了完備的讀寫鎖功能。”

  • 反射

    • 一類應用,它們能夠自描述和自控制,反射就是用來檢測儲存在介面變數內部(值value;類型concrete type) pair對的一種機制。Golang的reflect反射包提供了兩個方法分別是reflect.ValueOf() 和 reflect.TypeOf()

    • todo

  • 語言互動性

    • cgo,只要不使用C的標準庫函數,Go中是可以直接調用C和組合語言的,Go的執行階段程式庫就是用C和彙編實現的。使用時函數名以·開頭,C檔案中需要包含runtime.h標頭檔(Go用了特殊寄存器來存放像全域的struct G和struct M。包含這個標頭檔可以讓所有連結到Go的C檔案都知道這一點,這樣編譯器可以避免使用這些特定的寄存器作其它用途。)
  • 自動記憶體回收

    • Go用了特殊寄存器來存放像全域的struct G和struct M。包含這個標頭檔可以讓所有連結到Go的C檔案都知道這一點,這樣編譯器可以避免使用這些特定的寄存器作其它用途。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.