91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言的特點有哪些

發布時間:2021-10-26 15:53:46 來源:億速云 閱讀:158 作者:iii 欄目:編程語言

這篇文章主要講解了“Go語言的特點有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Go語言的特點有哪些”吧!

一些特點

Go是靜態類型的。 所有變量都需要使用給定類型聲明。 bool,string和"  number"(int,uint,float64,complex128等)類型是基本類型。 然后,也可以聲明結構(就像在C中一樣)。  這對于在編譯時檢測錯誤很有幫助。 哦,順便說一句,Go是一種編譯語言。

Go代碼編譯非常快! 這是創建者試圖改進的有關C和C ++的關鍵方面之一,他們做到了! 此外,由于代碼直接編譯為機器代碼,因此執行時間非常快。  這也使可執行文件高度可移植到具有相同平臺的其他計算機上。

Go有接口。 對于面向對象的程序員,這可能有點令人失望,但是Go沒有類。 它不支持繼承。 但是,它確實支持結構的創建以及為它們的方法的定義。  此外,它支持接口的定義,該接口支持松散耦合的系統。 還有一件很酷的事情是,您可以定義一個空接口(interface {}),然后將聲明一個通用對象!

Go專注于處理錯誤。 Go不支持例外。 它的哲學是函數必須返回返回值(或多個值,因為它可以同時返回多個變量)和錯誤值。  這使開發人員可以考慮發生故障時該怎么辦。 但是,還有一些與例外類似的東西,即"恐慌"和"恢復"機制。

去有垃圾收集。 這是對C和C ++的重大改進。 它是一種非常有效的語言,它增加了大多數最近使用的語言所具有的非常有用的功能。

Go支持內置并發。 到目前為止,這是Go語言最酷的功能! 它非常有效且易于使用。 我們將在下一節中詳細說明。

Go中的并發

首先,讓我們區分并發和并行。 并發是關于同時但不一定同時執行的獨立進程。 并行意味著執行是同時的。  因此,并行化只能通過多個內核來實現,而并發只能通過正確調度不同的進程在一個內核上完成。 Go實現了非常高效的并發性,并且還支持并行性。

人們認為Go遵循參與者模型的并發性。 在此模型中,參與者是計算的原始單位。 接收消息并根據消息進行某種計算的東西。 他們獲得輸入,執行操作并提供輸出。  Go中的演員是goroutines。

角色完全相互隔離。 這意味著它們不共享內存,而是通過其他結構進行通信,從而為它們提供同步。 Go為此實現了渠道。  即使可以通過不同的goroutine來使用共享內存結構,使用通道也可以使并發真正容易且安全。

最好的部分是goroutines非常輕巧。 Go計劃在系統線程上執行goroutine,從而允許多個goroutine在單個OS線程上同時運行。  這樣做的好處是減少了例程的堆棧(與OS線程的1MB相比,減少了4KB),并節省了OS線程之間的上下文切換成本,這比在goroutine之間切換要大得多。  我們甚至可以以非常低的成本同時運行數十萬個goroutine!

我們還提到過,在go中使用并發很容易。 讓我們看一個例子!

package main import “fmt”func add_string(string_to_add string, input_ch chan string, output_ch chan string) {   fmt.Println(“Running: add_string”)  result_string := <-input_ch + string_to_add  output_ch <- result_string}func initialize_string(initial_string string, input_ch chan string) {   fmt.Println(“Running: initialize_string”)  input_ch <- initial_string}func main() {   input_ch := make(chan string)   output_ch := make(chan string)   go add_string(“Hello World!”, input_ch, output_ch)   go initialize_string(“”, input_ch)   fmt.Println(“Waiting for goroutines”)   fmt.Println(<-output_ch)}

運行此代碼后,輸出為:

Waiting for goroutines Running: initialize_string Running: add_string Hello World!

因此,在這里我們看到運行并發的go例程有多么容易。 只需定義一個函數并在調用它之前添加" go"即可。 就這么簡單!  這將安排goroutine,但調用者函數的執行將繼續。 在這種情況下,我們調用該函數以添加" Hello World!"。 第一。  然后是初始化函數,然后我們打印消息" Waiting for goroutines",但控制臺顯示了不同的打印消息順序。 為什么?

如前所述,為了同步goroutine,我們可以使用通道。 我們首先創建一個輸入通道和一個輸出通道,然后以以下方式使用它們。  add_string函數將等待,直到輸入通道中有內容為止。 然后我們調用該函數以空字符串初始化輸入通道。 但是,主函數繼續執行并顯示" Waiting for  goroutines"。 然后,它等待輸出通道中包含某些內容。 這將允許初始化函數將空字符串放入輸入通道。 add_string函數將喚醒并添加" Hello  World!"。 到輸出通道,然后主功能將再次喚醒并最終打印完整的消息。 容易吧?

Go在哪里使用?

Go用于開發許多您可能知道的解決方案,例如Google,YouTube,Soundcloud,Docker等。但是,在Worldsensing中使我們開始了解Go的一種是Chirpstack。  這是一個開源的LoRaWAN網絡服務器堆棧。  它提供了一個用于設備管理的Web界面,并提供了許多方法來集成其他應用程序,例如API,MQTT隊列等。它具有模塊化的體系結構,如您所見。

Go語言的特點有哪些

Chirpstack是可配置的,并且易于部署。 您甚至可以找到帶有docker-compose.yml文件的開源項目,該文件可以輕松啟動所有內容!

如您所見,Go等出色的語言使開發人員可以創建出色的項目。

感謝各位的閱讀,以上就是“Go語言的特點有哪些”的內容了,經過本文的學習后,相信大家對Go語言的特點有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杭州市| 洛阳市| 新乡市| 南投县| 毕节市| 林西县| 衡东县| 杂多县| 观塘区| 吉木萨尔县| 龙海市| 巩义市| 横峰县| 长乐市| 二连浩特市| 甘孜| 平和县| 宝坻区| 商洛市| 临桂县| 勃利县| 博湖县| 商水县| 密云县| 莱芜市| 垫江县| 包头市| 祁门县| 日土县| 图木舒克市| 阿尔山市| 凤山县| 太白县| 平安县| 岢岚县| 沛县| 唐海县| 伽师县| 丹棱县| 永兴县| 武宁县|