国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

經驗之談:學習Go語言的利與弊

開發 后端
在這個競爭越來越烈的社會,掌握一門新語言或新技能,意味著你能比別人多一個機會。但萬事開頭難,學習新東西亦如此。如果開發員想學一門新的編程語言,該選擇什么呢?

 在這個競爭越來越烈的社會,掌握一門新語言或新技能,意味著你能比別人多一個機會。

但萬事開頭難,學習新東西亦如此。如果開發員想學一門新的編程語言,該選擇什么呢?

[[312557]]

 

Go語言學起來簡單得令人驚訝

當我第一次開始學習Go語言時,我正著手開發一個個人項目,為此我不得不掌握新的語法(我總是在學習一門新的編程語言時想出一個項目)。

我決定創建一個命令行應用程序來枚舉子域,以輔助尋找資產中存在的漏洞獎金計劃。為實現這一功能,與gobuster相似,該應用程序必須并行地發出多個HTTP請求,但我想通過增加一些功能(例如抓取HTML響應以獲取與安全相關的有趣信息)來重新構建特定循環。

我嘗試用go-routine來解決此問題,其中很具挑戰性的一點是程序發出的HTTP請求數量未知,因此需要學習如何有效處理這些請求。

第一印象

很快,我發現語法異常熟悉,盡管我之前從未閱讀過相關文檔。在我看來,這些概念很直觀(其他人可能不贊成)。Defer的使用直接明了。用于格式化字符串的fmt包好像解決了我之前未發現的問題。我開始認識到Go作為新興編程語言近年來得到快速發展的原因。因此,我決定更深入地研究Go語言的初衷,以確定它是否值得花時間學習。

為什么開發Go語言

目的

Go語言由谷歌開發,目的是使多進程開發更加高效和安全,以提高服務器長期運行的可維護性、可靠性和有效性。對谷歌來說,該語言可解決其當前面臨的編譯時間過長和當今已在生產中取得普遍應用的大規模數據處理問題。谷歌希望開發出一種注重于可伸縮性、可讀性和并發性的語言,而其他語言無法滿足這些要求,因此誕生了Go語言。谷歌開發人員從現有的語言中提取了最簡單明了的概念,并將這些概念改進和組合,最終形成了Go。以處理字符串的高效數據庫——fmt數據包為例:

“fmt包使用類似于C的printf和scanf的函數,用來實現格式化的I/O。動詞形式源自C,但更簡單。”

這就是從一種成功且通用的語言(在本例中是C語言)中提取功能并對其進行改進的例子。

Go語言的并發機制基于CSP建模;使用通道可避免共享數據出現同步錯誤,這種信息交互方式更簡單也更安全。

Go語言關注的另一個重點是簡潔化。使用Go語言需要在其框架下形成一種公認的特有代碼風格,并在開發不同項目時保持一致,以減少配置linting規則和在開發過程中學習不同的代碼風格的時間;而時間,是在團隊中工作的一個要素。

從理論上講,這將減少開發人員在代碼風格和編程方法上的差異,正如包含了許多Eslint規則的JavaScript語言。

方法

Go語言所采用的方法將解釋型動態型語言的編程簡便性與編譯性靜態型語言的效率和安全性相結合。其內置映射定義了int、byte和string等基本類型。有指針。除此之外,在使用Go語言進行開發時還應注意的一個重要的原則就是正交性,該原則也是函數方法的基礎。

Go使用結構(struct)表示數據,用戶接口表示抽象。關于Go語言是否面向對象一直存在爭議,Java開發人員起初很難理解為什么對此會存在爭議。爭議的焦點在于Go中沒有類型層次,而普遍判斷是否面向對象的依據是類型層次。有些結構不能繼承,但確實符合對象樣式。Go更傾向于組合而不是繼承。多態性可以通過接口來實現。滿足該接口的任何類型對象都可與其對接。

除了這些核心概念之外,Go還通過多核處理實現了對并發的現代需求。強并發性以goroutines和channels的形式實現。在大型并發程序中,自動垃圾回收作為一種有效的內存管理手段非常重要。單元測試簡單到只需使用前綴_test.go即可,該前綴在與源文件相同的目錄中聲明。

學習Go語言的理由

1、簡潔性

Go語言采用極簡方法開發。沒有類或繼承。流行語言(如Java和Python)中的這部分功能在Go中被結構取代了。Go是強靜態類型且鼓勵在各種情況下使用接口。靜態類型旨在減少編譯錯誤,也使Go更易學。

在使用其他語言如JavaScript時,多種固有方法、范例和公約令人為難,而Go提供了一種方法作為通用樣式指南。從團隊的角度出發,個人代碼的分析和推理更容易,集成也更順暢。

盡管沒有隱式轉換,但是花費在語法上的工作仍然非常少。這使代碼可讀性更強、更簡單。

2、快速性

靜態連接的編譯器通過編譯生成二進制可執行文件,而無需處理外部依賴項。可執行的二進制文件已編譯為本機代碼,無需使用虛擬機,盡管其數據量有所增加,但編譯速度更快、可移植性更強。

此外,如前文所述,Go的編譯時間和生產時間也很快。由于其簡潔性,在使用Go語言時,開發者的工作效率得到了關注,即從最初的概念/想法到產成品的過程更快。

3、并發性

在Go語言中,并發性是核心概念,具有較高優先級,就像使用go關鍵字為函數添加前綴一樣容易。Goroutines是簡單輕量級的執行線程。在Go中實現并發非常容易。使用go關鍵字產生一個新線程,該線程在一組線程的多個核心之間共享。Goroutines只有幾千字節,由Go運行時處理,Go運行時將go-routines移動到不同的可運行線程上,以避免通道被阻塞。這種方法使得異步執行速度幾乎和C/ C++一樣快。您可以使用channel來控制goroutine的數量,各channel看似同步,但實質上是異步的。

Go語言的運行時使用可調整大小的有界堆棧,從而使堆棧變小。運行時會更改內存大小以自動存儲堆棧。數十萬個goroutine可以在同一地址空間上運行。

存在的問題

沒有范型

此問題存在爭議。在Java這樣的語言中,范型的使用提高了代碼的可重用性,同時確保了類型安全。Go的使用者們已經提出了這個“問題”,并對此進行了思考。這里的建議可參考。然而,主流意見是使用范型的好處不會超過簡單性和可讀性(沒有范型)的好處。

競爭形勢

“不要通過分享記憶來交流;相反,通過交流來共享記憶。”

這一理念帶來了優勢,也使Go容易受到競爭條件的影響。

由于go結構的可變性(以及缺少不可變的數據結構),共享可變數據被迫要跨越多個并發進程實現。例如在沒有深度復制的情況下沿通道發送指針,本質上可變特性引發了競爭形勢。通道可能會改進并發編程,但確實存在競爭風險,這種情況channel無能為力。

然而,Go CLI中內置了一個競態檢測器來幫助檢測競態條件。

錯誤檢查

錯誤檢查非常明確,沒有try…catch語句。在處理錯誤時,必須改變原有方法和思維方式,尤其是已習慣于其他語言的處理方式。Go開發團隊認為,減少異常可以防止代碼復雜化和返回值重載。這與其簡潔性需求一致。但是,在真正異常的情況下,可使用panic和recover來處理異常并進行恢復。Go還有一個標準的error接口類型,它返回一個帶有error()的錯誤字符串。

Go開發人員使用多值返回檢查錯誤值來處理錯誤。可以從預設產生錯誤的函數中返回錯誤。通常用if err != nil來從代碼庫中識別錯誤。

對某些問題而言太簡單

Go語言的簡潔性是有代價的。Go不如JavaScript富有表現力。沒有默認值。缺少抽象和范式使得實現DRY原理更加困難、復雜,不直觀。

值得注意的一點是Go還很年輕。開發團隊正在考慮使用范型,隨著Go的成熟還有很大改進的空間。該團隊非常努力地不斷開發和改進Go。和任何一種語言一樣,Go也有其長處和短處。可以確定的是,如果足夠多的Gophers(Go程序員)覺得需要某種功能,該功能將得以實現。

盡管看上去某些功能缺失了,但換個角度看待可以了解到如何在Go中實現看似缺少的功能。

通常可以通過不同的方法來實現同一件事,即更加友好的Go方法。

何時使用

可以說在當前階段,Go并不能解決所有問題;特別是與需要大量抽象的GUI和復雜系統相關時。

但是,又有哪種語言可以解決所有問題呢?

利用Go的優勢。如果覺得該語言過于簡單,并且很難以一種簡明的方式增加復雜性,則可以用Go來構建簡單的微服務而不是復雜系統。將Go作為構建網絡和系統工具,而不是替代一種更適合當前任務的語言。

因此最重要的是使用正確的工具完成工作。如果這個工具是Go,那么Go應擅長解決該問題。

切記不要張冠李戴,病急亂投醫。

Go作為一種開源編程語言,可輕松構建簡單,可靠和高效的軟件。

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2009-12-23 10:07:57

學習WPF

2010-04-30 14:31:58

Unix系統

2009-12-17 18:12:31

Ruby框架應用

2009-11-09 17:06:38

WCF選擇綁定

2012-05-23 09:43:59

Linux升級經驗

2009-12-09 16:58:03

PHP strtoti

2010-03-02 17:48:35

WCF尋址報頭

2010-07-26 15:36:59

CCNP

2010-05-10 18:18:46

Unix系統

2010-04-22 18:07:28

Aix系統維護

2009-11-02 15:16:07

VB.NET編程

2012-07-06 15:31:29

Linux系統

2010-04-29 12:09:42

Unix服務器

2009-11-05 15:50:25

WCF behavio

2009-11-16 15:32:05

PHP數組函數

2009-06-16 08:49:51

2009-12-08 11:44:14

PHP獲取隨機數

2010-08-09 14:28:04

職業生涯

2009-03-20 17:14:57

2009-11-03 10:40:57

VB.NET Prot
點贊
收藏

51CTO技術棧公眾號

亚洲欧美国产va在线影院| 日本韩国一区二区| 国产91久久婷婷一区二区| av在线电影观看| 亚洲色图欧美激情| 苍井空浴缸大战猛男120分钟| 国产精品99久久久| 免费久久久久久| 免费成人美女在线观看.| 成人激情黄色网| 色资源二区在线视频| 人人精品人人爱| 亚洲欧美日韩国产成人综合一二三区| 国产精品毛片视频| 欧美在线视频网| 国产精品国产福利国产秒拍| 满满都是荷尔蒙韩剧在线观看| 中文字幕欧美区| 狠狠热免费视频| 久久久久久免费毛片精品| 亚洲区国产区| 国产成人精品免高潮费视频| 91综合久久爱com| 性欧美暴力猛交69hd| 日韩av综合| 国产精品入口免费视| 国产精品一区二区av日韩在线 | 最近中文字幕一区二区| 一区二区三区丝袜| 亚洲老女人av| 欧美va亚洲va| 欧洲av一区二区| 成人黄色激情网| 欧美亚洲一区二区三区| 日本大片免费看| 一区三区在线欧| 国产三级三级看三级| 51久久夜色精品国产麻豆| 久九九久频精品短视频| 欧美性在线观看| 狠狠色综合网| 欧美少妇一级片| 亚洲精品中文在线| 国产精品毛片av| 粉嫩精品一区二区三区在线观看| 暧暧视频在线免费观看| 日本高清视频一区| 成人免费高清观看| 国产欧美日韩精品丝袜高跟鞋| 国产午夜视频在线观看| 日韩免费视频一区| 91亚洲精品一区二区乱码| 日韩成人免费av| 国产精品av免费| 欧美天堂在线观看| 在线综合色站| 老汉色影院首页| 午夜精品aaa| 日本高清精品| 国产视频第一页在线观看| 国产九九精品视频| 亚洲精品欧美综合四区| 亚洲美女久久精品| 国产在线播放一区二区| 亚洲欧美日韩小说| 日本韩国欧美| 妞干网免费视频| 国产成人精品免费视频| 亚洲国产精品成人综合色在线婷婷| 人狥杂交一区欧美二区| 日韩偷拍一区二区| 欧美日本在线看| 日韩黄色小视频| 夜夜爽99久久国产综合精品女不卡| 国产精品8888| 精品免费av在线| 久久高清视频免费| 欧美成人一品| 国产九九精品视频| 久久精品国产一区二区三| 亚洲日本精品国产第一区| 丁香啪啪综合成人亚洲小说| 亚洲视频第二页| 国产中文字幕91| 亚洲第一综合色| 日韩黄色在线| 两个人hd高清在线观看| 午夜精品久久久久久久99黑人| 中文字幕一区二区5566日韩| 欧美网站免费| 黄色免费看网站| 欧美在线观看网站| 蜜臀av性久久久久蜜臀av麻豆| 成人软件在线观看| 国产男女爽爽爽| 欧美三日本三级少妇三99| 黄网动漫久久久| 亚洲天堂一区二区三区四区| 色网在线视频| 欧美视频观看一区| 国产成人精品免高潮在线观看| 国内欧美视频一区二区| 国产精品三p一区二区| 一个人看的免费网站www视频| 欧日韩一区二区三区| 久久精品一本久久99精品| 欧美国产视频在线| 日本一区二区在线不卡| 久久这里只精品最新地址| 日韩五码在线| 欧美综合影院| www.91在线| 免费成人午夜视频| 国产xxxxx在线观看| 午夜免费高清视频| 欧美一级黑人aaaaaaa做受| 97久久超碰福利国产精品…| 日韩精品欧美精品| 成人午夜视频在线观看免费| 91精品国产aⅴ一区二区| 日本午夜精品| 欧美~级网站不卡| 欧美黄色网视频| 精品国模一区二区三区欧美| 精品视频久久久久久久| 国产精品久久久久久久久妇女| 日韩漫画puputoon| 国产精品三级a三级三级午夜| 91久久精品国产91久久性色tv| 91精品国产综合久久福利 | 色欧美片视频在线观看在线视频| 亚洲欧美色图小说| 2022国产精品视频| 国内不卡的二区三区中文字幕 | 亚洲精品成人免费| 亚洲第一在线| 一区二区三区视频在线观看视频| 91免费视频国产| 91黄色在线观看| 亚洲第一网站| 国产盗摄——sm在线视频| 亚洲乱码一区二区三区| 91精品国产综合久久国产大片| 久久午夜精品| 欧美大片1688| 国产视频一区二区三区在线播放| 高清视频欧美一级| 一区二区三区亚洲变态调教大结局 | 欧美一区二区三区免费视| 国产精品盗摄一区二区三区| 久久久久97| 欧美性大战久久久久| 精品国产乱码久久久久久图片| 国产麻豆精品一区二区| 九色综合婷婷综合| gogogo免费高清日本写真| 精品国产免费久久久久久尖叫 | 狠狠热免费视频| 5278欧美一区二区三区| 国产精品国产三级国产普通话蜜臀 | www.日本xxxx| 97免费在线视频| 国产精品无人区| 亚洲欧美偷拍自拍| 成年人在线观看网站| 久久精品国产精品青草色艺| 欧美一区二区国产| 精品一区二区免费看| 97精品久久| 在线国产网址| 免费中文日韩| 亚洲无线码在线一区观看| 中文字幕一区二区三区乱码在线 | 成人污污www网站免费丝瓜| 青草青青在线视频| 一区二区在线视频| 国产免费久久精品| 欧美丝袜丝交足nylons172| 自拍偷在线精品自拍偷无码专区| 欧美日韩在线免费| 亚洲一二三区在线| 亚洲美女自拍视频| 久久精品一二三| 99视频精品视频高清免费| 9765激情中文在线| 日韩不卡一二三| 国产精品三区四区| 欧美另类69精品久久久久9999| 亚洲18女电影在线观看| 国产一区二区三区免费观看| 日韩av影院| 色a资源在线| 成年人视频在线| 国产精品久久久久久模特| 国产精品乱人伦一区二区| 日本久久一区二区三区| 国产亚洲精品一区二555| 亚洲综合影视| 久久国产精品国产精品| 成人精品在线观看|