文章目錄
- 前言
- 一、Go是什么?
- 二、和同行的對比
- 1、語言的分類
- 2、Go語言的特點
- 3、Go語言的優勢
- 總結
前言
隨便聊聊:大概是2018年左右開始接觸到Go語言,相比于早年入行Go語言開發的大佬們來說不是很早,本人是從C++、Python的基礎上轉到Go語言開發,還算比較順利,剛入行的時候主要使用的語言是C/C++,C++懂的都懂,被隔壁的Java摩擦多年,雖高效,但對開發者來說可不是件幸福的事;后來以Python為代表的解釋性語言開始爆發,上手了Python之后一度不想用回C++,直到18年上手Go,總算“翻身碼農把歌唱”,這里想對我了解到的Go做一個分享,后續會按照Go的模塊和實體來介紹
提示:以下是本篇文章正文內容,有錯誤的地方歡迎大家指正!也歡迎大家轉載分享!
一、Go是什么?
Go是一門非常年輕的語言,07年起源于谷歌,09年對外開源,12年才發布第一個對外版本Go 1.0,有關Go的起源軼事感興趣的同學可以私下去了解一下;現在主流的編程語言大概有10幾種,從1945年第一臺計算機誕生至今,程式員們一直致力于怎樣讓計算機更準確高效地了解人類想要它們完成的任務,所謂編程就是架起人和機器之間的橋梁,現代工業讓計算機算力越來越強,為了和計算機溝通更方便,這些年出現的語言輕量,高效,安全是主流方向,Go語言作為后起之秀,主要目標就是“兼顧Python等動態語言的開發速度和C/C++等編譯型語言的性能和安全性”,
二、和同行的對比
有關“誰是最好的編程語言?”這個論題在各大論壇上一直是爭論不休,從業人員其實也都知道,沒有最好的語言,也沒有最通用的框架,拋開業務場景談能力都是耍流氓,這里簡單的將Go語言橫向的和其他語言進行對比,無意褒貶,意在突出Go語言本身的優劣,
1、語言的分類
按照語言的發達程度可以分類為:
a.機器語言:
機器語言顧名思義就是不需要翻譯機器就能看懂的語言,也就是通常我們理解的”0“和”1“,人類很難識別和記憶,但機器硬體很容易明白,
b.匯編語言:
匯編語言是一種用于電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言,在匯編語言中,用助記符(Mnemonics)代替機器指令的操操作碼,用地址符號(Symbol)或標號(Label)代替指令或運算元的地址,在不同的設備中,匯編語言對應著不同的機器語言指令集,通過匯編程序轉換成機器指令,普遍地說,特定的匯編語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植,
有關匯編語言和GO語言的關系后面會單獨講解,
c.高級語言:
前面兩類都屬于低級語言,所謂高級語言就是更符合人類思維方式的語言,經過翻譯最終轉化為能夠被機器識別的機器語言,高級語言里也有很多細分的標準,比如:
1、”面向類“的高級編程語言和”面向物件“的高級編程語言;
2、編譯型高級編程語言(C/C++,Java等)和解釋型高級編程語言(JavaScript,Python等);
3、強型別語言(靜態語言 C/C++,Java等)和弱型別語言(動態語言,PHP,JavaScript,Python等)
2、Go語言的特點
Go語言可以說迄今為止編程語言的集大成者,Go語言是為了適應當今多核計算和高并發網路請求場景而誕生的語言,除去靜態語言和動態語言一些本身的差異,我們來看看Go本身的特色:
- Go和其他面向物件的高級語言存在巨大差異,首先Go沒有類的概念,也就不存在子類繼承父類的關系,也沒有建構式和解構式,也沒有默認引數,沒有運算子多載,
- Go語言自身支持并發操作,這也是Go最大的亮點,goroutine的存在使得Go從底層原生支持并發運行,后面會單獨聊聊goroutine的原理和實作,
- Go語言不需要單獨對例外進行處理,而是將例外作為引數回傳,這也是Go的語言風格,
- Go本身是一種靜態語言,但Go也支持運行時動態型別,
- Go也具備動態語言的特色,內置runtime,支持自動垃圾回收,不需要開發者單獨對記憶體進行操作,
- Go對未使用的變數和包會在編譯的時候報錯,
- 關于Go的其他的一些語法特色后面再結合代碼詳細聊,比如Go自帶fmt修正編碼規范,Switch語法無需default等等,
關于Go的特點會在接下來的文章里給大家詳細介紹,這里做個簡單的對比:

3、Go語言的優勢
- 相比于C/C++,Go語言擁有清晰的依賴管理和全自動的垃圾回識訓制,因此其代碼量大大降低,開發效率大大提高,
- 相對于 Java 來講,Go語言擁有簡明的型別系統、函式式編程范式和先進的并發編程模型,因此其代碼塊更小更簡潔、可重用性更高,并可在多核計算環境下更快地運行,
- 對于 PHP 來講,Go語言更具通用性和規范性,這使得其更適合構建大型的軟體,并能夠更好地將各個模塊組織在一起,在性能方面,PHP 不可與 Go 同日而語,
- 對于 Python/Ruby 來講,Go 的優勢在于其簡潔的語法、非侵入式和扁平化的型別系統和渾然天成的多范式編程模型,與 PHP 一樣,Python 和 Ruby 也是動態型別的解釋型語言,這就意味著它們的運行速度會比靜態型別的編譯型語言慢很多,
總而言之,Go語言對于當前大多數主流語言來講,最大的優勢在于具有較高的生產效率、先進的依賴管理和型別系統,以及原生的并發計算支持,
總結
本文主要介紹了Go的一些特點,個人還是很推薦大家多了解了解Go語言的,越來越多的大廠都已經或者逐步向Go在遷移,對于還在探索選擇一門入門語言的同學Go是一門兼顧簡單和性能的語言,而且前景也廣闊,
后續:后面會更多的通過代碼來跟大家聊聊Go的開發,大家有感興趣關于Go的方面的知識也可留言,后面也會陸續分享,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265116.html
標籤:其他
上一篇:嵌入式筆試面試題目系列(匯總)
