成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你沒聽說過的Go語言驚人優(yōu)點

開發(fā) 后端
在這篇文章中,我將討論為什么你需要嘗試一下 Go 語言,以及應(yīng)該從哪里學起。Go 語言是可能是最近幾年里你經(jīng)常聽人說起的編程語言。盡管它在 2009 年已經(jīng)發(fā)布了,但它最近才開始流行起來。

[[244929]]

在這篇文章中,我將討論為什么你需要嘗試一下 Go 語言,以及應(yīng)該從哪里學起。

Go 語言是可能是最近幾年里你經(jīng)常聽人說起的編程語言。盡管它在 2009 年已經(jīng)發(fā)布了,但它最近才開始流行起來。

根據(jù) Google 趨勢,Go 語言非常流行。

根據(jù) Google 趨勢,Go 語言非常流行。

這篇文章不會討論一些你經(jīng)常看到的 Go 語言的主要特性。

相反,我想向您介紹一些相當小眾但仍然很重要的功能。只有在您決定嘗試 Go 語言后,您才會知道這些功能。

這些都是表面上沒有體現(xiàn)出來的驚人特性,但它們可以為您節(jié)省數(shù)周或數(shù)月的工作量。而且這些特性還可以使軟件開發(fā)更加愉快。

閱讀本文不需要任何語言經(jīng)驗,所以不必擔心你還不了解 Go 語言。如果你想了解更多,可以看看我在底部列出的一些額外的鏈接。

我們將討論以下主題:

  • GoDoc
  • 靜態(tài)代碼分析
  • 內(nèi)置的測試和分析框架
  • 競爭條件檢測
  • 學習曲線
  • 反射
  • Opinionatedness
  • 文化

請注意,這個列表不遵循任何特定順序來討論。

 

GoDoc

Go 語言非常重視代碼中的文檔,所以也很簡潔。

GoDoc 是一個靜態(tài)代碼分析工具,可以直接從代碼中創(chuàng)建漂亮的文檔頁面。GoDoc 的一個顯著特點是它不使用任何其他的語言,如 JavaDoc、PHPDoc 或 JSDoc 來注釋代碼中的結(jié)構(gòu),只需要用英語。

它使用從代碼中獲取的盡可能多的信息來概述、構(gòu)造和格式化文檔。它有多而全的功能,比如:交叉引用、代碼示例,并直接鏈接到你的版本控制系統(tǒng)倉庫。

而你需要做的只有添加一些像 // MyFunc transforms Foo into Bar 這樣子的老牌注釋,而這些注釋也會反映在的文檔中。你甚至可以添加一些通過網(wǎng)絡(luò)界面或者在本地可以實際運行的 代碼示例

GoDoc 是 Go 的唯一文檔引擎,整個社區(qū)都在使用。這意味著用 Go 編寫的每個庫或應(yīng)用程序都具有相同的文檔格式。從長遠來看,它可以幫你在瀏覽這些文檔時節(jié)省大量時間。

例如,這是我最近一個小項目的 GoDoc 頁面:pullkee — GoDoc

 

靜態(tài)代碼分析

Go 嚴重依賴于靜態(tài)代碼分析。例如用于文檔的 godoc,用于代碼格式化的 gofmt,用于代碼風格的 golint,等等。

它們是如此之多,甚至有一個總攬了它們的項目 gometalinter ,將它們組合成了單一的實用程序。

這些工具通常作為獨立的命令行應(yīng)用程序?qū)崿F(xiàn),并可輕松與任何編碼環(huán)境集成。

靜態(tài)代碼分析實際上并不是現(xiàn)代編程的新概念,但是 Go 將其帶入了絕對的范疇。我無法估量它為我節(jié)省了多少時間。此外,它給你一種安全感,就像有人在你背后支持你一樣。

創(chuàng)建自己的分析器非常簡單,因為 Go 有專門的內(nèi)置包來解析和加工 Go 源碼。

你可以從這個鏈接中了解到更多相關(guān)內(nèi)容: GothamGo Kickoff Meetup: Alan Donovan 的 Go 靜態(tài)分析工具

 

內(nèi)置的測試和分析框架

您是否曾嘗試為一個從頭開始的 JavaScript 項目選擇測試框架?如果是這樣,你或許會理解經(jīng)歷這種過度分析analysis paralysis的痛苦。您可能也意識到您沒有使用其中 80% 的框架。

一旦您需要進行一些可靠的分析,問題就會重復(fù)出現(xiàn)。

Go 附帶內(nèi)置測試工具,旨在簡化和提高效率。它為您提供了最簡單的 API,并做出最小的假設(shè)。您可以將它用于不同類型的測試、分析,甚至可以提供可執(zhí)行代碼示例。

它可以開箱即用地生成便于持續(xù)集成的輸出,而且它的用法很簡單,只需運行 go test。當然,它還支持高級功能,如并行運行測試,跳過標記代碼,以及其他更多功能。

 

競爭條件檢測

您可能已經(jīng)聽說了 Goroutine,它們在 Go 中用于實現(xiàn)并發(fā)代碼執(zhí)行。如果你未曾了解過,這里有一個非常簡短的解釋。

無論具體技術(shù)如何,復(fù)雜應(yīng)用中的并發(fā)編程都不容易,部分原因在于競爭條件的可能性。

簡單地說,當幾個并發(fā)操作以不可預(yù)測的順序完成時,競爭條件就會發(fā)生。它可能會導(dǎo)致大量的錯誤,特別難以追查。如果你曾經(jīng)花了一天時間調(diào)試集成測試,該測試僅在大約 80% 的執(zhí)行中起作用?這可能是競爭條件引起的。

總而言之,在 Go 中非常重視并發(fā)編程,幸運的是,我們有一個強大的工具來捕捉這些競爭條件。它完全集成到 Go 的工具鏈中。

您可以在這里閱讀更多相關(guān)信息并了解如何使用它:介紹 Go 中的競爭條件檢測 - Go Blog

 

學習曲線

您可以在一個晚上學習所有的 Go 語言功能。我是認真的。當然,還有標準庫,以及不同的,更具體領(lǐng)域的***實踐。但是兩個小時就足以讓你自信地編寫一個簡單的 HTTP 服務(wù)器或命令行應(yīng)用程序。

Go 語言擁有出色的文檔,大部分高級主題已經(jīng)在他們的博客上進行了介紹:Go 編程語言博客

比起 Java(以及 Java 家族的語言)、Javascript、Ruby、Python 甚至 PHP,你可以更輕松地把 Go 語言帶到你的團隊中。由于環(huán)境易于設(shè)置,您的團隊在完成***個生產(chǎn)代碼之前需要進行的投資要小得多。

 

反射

代碼反射本質(zhì)上是一種隱藏在編譯器下并訪問有關(guān)語言結(jié)構(gòu)的各種元信息的能力,例如變量或函數(shù)。

鑒于 Go 是一種靜態(tài)類型語言,當涉及更松散類型的抽象編程時,它會受到許多各種限制。特別是與 Javascript 或 Python 等語言相比。

此外,Go 沒有實現(xiàn)一個名為泛型的概念,這使得以抽象方式處理多種類型更具挑戰(zhàn)性。然而,由于泛型帶來的復(fù)雜程度,許多人認為不實現(xiàn)泛型對語言實際上是有益的。我完全同意。

根據(jù) Go 的理念(這是一個單獨的主題),您應(yīng)該努力不要過度設(shè)計您的解決方案。這也適用于動態(tài)類型編程。盡可能堅持使用靜態(tài)類型,并在確切知道要處理的類型時使用接口interface。接口在 Go 中非常強大且無處不在。

但是,仍然存在一些情況,你無法知道你處理的數(shù)據(jù)類型。一個很好的例子是 JSON。您可以在應(yīng)用程序中來回轉(zhuǎn)換所有類型的數(shù)據(jù)。字符串、緩沖區(qū)、各種數(shù)字、嵌套結(jié)構(gòu)等。

為了解決這個問題,您需要一個工具來檢查運行時的數(shù)據(jù)并根據(jù)其類型和結(jié)構(gòu)采取不同行為。反射Reflect可以幫到你。Go 擁有***的反射包,使您的代碼能夠像 Javascript 這樣的語言一樣動態(tài)。

一個重要的警告是知道你使用它所帶來的代價 —— 并且只有知道在沒有更簡單的方法時才使用它。

你可以在這里閱讀更多相關(guān)信息: 反射的法則 — Go 博客.

您還可以在此處閱讀 JSON 包源碼中的一些實際代碼: src/encoding/json/encode.go — Source Code

 

Opinionatedness(專制獨裁的 Go)

順便問一下,有這樣一個單詞嗎?

來自 Javascript 世界,我面臨的最艱巨的困難之一是決定我需要使用哪些約定和工具。我應(yīng)該如何設(shè)計代碼?我應(yīng)該使用什么測試庫?我該怎么設(shè)計結(jié)構(gòu)?我應(yīng)該依賴哪些編程范例和方法?

這有時候基本上讓我卡住了。我需要花時間思考這些事情而不是編寫代碼并滿足用戶。

首先,我應(yīng)該注意到我完全知道這些慣例的來源,它總是來源于你或者你的團隊。無論如何,即使是一群經(jīng)驗豐富的 Javascript 開發(fā)人員也很容易發(fā)現(xiàn)他們在實現(xiàn)相同的結(jié)果時,而大部分的經(jīng)驗卻是在完全不同的工具和范例上。

這導(dǎo)致整個團隊中出現(xiàn)過度分析,并且使得個體之間更難以相互協(xié)作。

嗯,Go 是不同的。即使您對如何構(gòu)建和維護代碼有很多強烈的意見,例如:如何命名,要遵循哪些結(jié)構(gòu)模式,如何更好地實現(xiàn)并發(fā)。但你只有一個每個人都遵循的風格指南。你只有一個內(nèi)置在基本工具鏈中的測試框架。

雖然這似乎過于嚴格,但它為您和您的團隊節(jié)省了大量時間。當你寫代碼時,受一點限制實際上是一件好事。在構(gòu)建新代碼時,它為您提供了一種更直接的方法,并且可以更容易地調(diào)試現(xiàn)有代碼。

因此,大多數(shù) Go 項目在代碼方面看起來非常相似。

 

文化

人們說,每當你學習一門新的口語時,你也會沉浸在說這種語言的人的某些文化中。因此,您學習的語言越多,您可能會有更多的變化。

編程語言也是如此。無論您將來如何應(yīng)用新的編程語言,它總能給你帶來新的編程視角或某些特別的技術(shù)。

無論是函數(shù)式編程,模式匹配pattern matching還是原型繼承prototypal inheritance。一旦你學會了它們,你就可以隨身攜帶這些編程思想,這擴展了你作為軟件開發(fā)人員所擁有的問題解決工具集。它們也改變了你閱讀高質(zhì)量代碼的方式。

而 Go 在這方面有一項了不起的財富。Go 文化的主要支柱是保持簡單,腳踏實地的代碼,而不會產(chǎn)生許多冗余的抽象概念,并將可維護性放在首位。大部分時間花費在代碼的編寫工作上,而不是在修補工具和環(huán)境或者選擇不同的實現(xiàn)方式上,這也是 Go 文化的一部分。

Go 文化也可以總結(jié)為:“應(yīng)當只用一種方法去做一件事”。

一點注意事項。當你需要構(gòu)建相對復(fù)雜的抽象代碼時,Go 通常會妨礙你。好吧,我會說這是簡單的權(quán)衡。

如果你真的需要編寫大量具有復(fù)雜關(guān)系的抽象代碼,那么***使用 Java 或 Python 等語言。然而,這種情況卻很少。

在工作時始終使用***的工具!

 

總結(jié)

你或許之前聽說過 Go,或者它暫時在你圈子以外的地方。但無論怎樣,在開始新項目或改進現(xiàn)有項目時,Go 可能是您或您團隊的一個非常不錯的選擇。

這不是 Go 的所有驚人的優(yōu)點的完整列表,只是一些被人低估的特性。

請嘗試一下從 Go 之旅 來開始學習 Go,這將是一個令人驚嘆的開始。

如果您想了解有關(guān) Go 的優(yōu)點的更多信息,可以查看以下鏈接:

并在評論中分享您的閱讀感悟!

即使您不是為了專門尋找新的編程語言語言,也值得花一兩個小時來感受它。也許它對你來說可能會變得非常有用。

不斷為您的工作尋找***的工具! 

責任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2018-10-11 10:41:12

Go 開發(fā)技術(shù)

2021-01-20 15:20:02

JS操作符前端

2010-03-30 10:24:59

Nehalem-EX

2014-12-02 10:12:02

BaaSFacebook云服務(wù)

2015-02-06 10:11:57

印度中國手機

2022-12-09 14:31:24

程序員編程

2020-10-29 10:35:53

Nginx架構(gòu)服務(wù)器

2022-11-30 16:31:48

CSS開發(fā)瀏覽器

2023-11-10 08:22:09

雪花算法生成算法分布式

2018-02-08 09:00:22

框架移動應(yīng)用移動混合應(yīng)用

2020-09-01 10:46:55

微服務(wù)架構(gòu)服務(wù)器

2016-01-27 10:26:53

JavaScript操作系統(tǒng)

2012-02-01 10:18:23

編程

2011-05-10 09:58:38

IBM藍色巨人百年

2014-06-20 09:38:31

2021-05-18 20:07:18

光通信信息

2009-05-13 20:12:15

殺毒設(shè)計師H1N1

2016-01-26 15:33:07

JavaScriptNodeOS操作系統(tǒng)

2021-06-03 08:55:54

分布式事務(wù)ACID
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 九九热精品在线 | 亚洲成人免费av | av一区二区三区四区 | 成人欧美一区二区三区黑人孕妇 | 成人国产a | 一区二区三区免费 | 午夜精品一区二区三区在线 | 日韩福利在线观看 | 久久免费视频观看 | 日韩视频在线播放 | 日韩成人精品一区二区三区 | 成人免费淫片aa视频免费 | 精品久久ai电影 | 亚洲一二三区免费 | 国产精品亚洲一区 | 91高清在线观看 | 精品久久久久久国产 | 亚洲成人免费观看 | 亚洲精品一二三区 | 中文字幕一区二区三区精彩视频 | 在线看亚洲 | 男女精品久久 | 日韩中文字幕 | 国产91在线 | 中日 | 成人网视频 | 亚洲一区二区免费视频 | 久久99精品久久久久婷婷 | 精品日韩| 久久久一区二区 | 精品国产一区探花在线观看 | 久久久久国产精品 | 精品乱子伦一区二区三区 | 成人二区三区 | 91精品一区| 欧美1—12sexvideos| 久久综合九九 | 成人免费在线视频 | 一级片成人| 91免费电影 | 欧美女优在线观看 | 日韩在线精品视频 |