Golang-特點

1、不支持繼承。結構體可以實現類似功能

2、面向對象?:yes and no

3、與java、python一樣,內置gc,不需要我們手動創建、釋放變量在內存中的佔用。區別是隻有go支持指針對內存的直接訪問

python幾乎全是引用傳遞,而go,統一採用值傳遞,但提供指針機制,用戶可以自己選擇數據的傳遞方式。

在編寫go時,要充分考慮指針,提高數據訪問效率(尤其是傳遞數據較大時),減少內存複製

 

4、錯誤處理機制,拋棄冗長繁瑣的try-catch-finally,當然,不少開發者認爲try-catch機制更好,在未來go發展也可能會加入try-catch機制。

 

5、併發控制:與主流語言通過共享內存實現。Go採用CSP模式。

兩個獨立的併發實體通過共享通訊Channel(管道)進行通信得併發模式

(tips, python併發機制:

Unix/Linux操作系統提供了一個fork()系統調用,它非常特殊。普通的函數調用,調用一次,返回一次,但是fork()調用一次,返回兩次,因爲操作系統自動把當前進程(稱爲父進程)複製了一份(稱爲子進程),然後,分別在父進程和子進程內返回。

子進程永遠返回0,而父進程返回子進程的ID。這樣做的理由是,一個父進程可以fork出很多子進程,所以,父進程要記下每個子進程的ID,而子進程只需要調用getppid()就可以拿到父進程的ID。

有了fork調用,一個進程在接到新任務時就可以複製出一個子進程來處理新任務,常見的Apache服務器就是由父進程監聽端口,每當有新的http請求時,就fork出子進程來處理新的http請求。)

 

6、Goroutine調度機制

goroutine的調度機制與java、python不同,前者是多對多(m:n)的對應關係,且不是由內核直接調度的線程機制效率高,但因爲goroutine的切換不設計內核級切換,所以代價小的多。後兩者線程模型是1:1的關係

併發只需一個:go function()  即可

 

 

7、靜態類型:

因爲變量類型已經定義好的,所以可以編譯爲靜態文件,不需要邊解釋邊執行(python就是邊解釋邊執行,因爲動態的特性,沒有執行到的地址,解釋器也不確定是什麼值),所以運行效率會很快

 

8、go代碼中可以不寫; 編譯器在編譯時會自動加上,也輕微提高了開發者的效率

 

如果對你有幫助,可否在文章右側點個贊再走呢~~

 

本文爲原創,轉載請註明出處

 

golang-包與基本數據類型

python魔法方法(部分)

python complex函數

python避坑篇

python部分高級用法

python開發手冊

python內置函數(下)

python內置屬性,函數

python異常處理

python lambda函數

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章