在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Go編程語言-你應該知道的一切

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2023-12-11 17:37 ? 次閱讀

Go 編程語言為開發者社區所熟知已有幾年,但絕對仍然令人驚嘆。它成功地保持了最受歡迎的10 種語言的地位,這并非沒有原因。超過 80,000 名開發者分享了他們的意見。Golang 獲得了近 63% 的“喜愛”選票。我們無法想象更好的建議,但無論如何我們準備了這份概述,在我看來,是為了向您提供有關 Go 編程語言的最重要的信息

Go 語言簡史

Go 編程語言的故事始于 Google,當時三位工程師 Robert Griesemer、Rob Pike 和 Ken Thompson 對 C++ 的復雜性以及缺乏提供高效編譯和執行的簡單語言感到厭倦。這就是為什么在 2007 年 9 月 21 日,他們開始設計一種新語言。他們花了兩年時間,在 2009 年 11 月 10 日,Go 編程語言成為公共開源項目。又過了三年,2012 年 3 月,Go 語言 1.0 版本發布。

Go 發明者的主要目標是將解釋型動態類型語言的編程簡便性與靜態類型編譯語言的效率和安全性結合起來。此外,Go語言旨在支持網絡和多核計算,并加速編碼過程。

為了實現這些目標,格里塞默、派克和湯普森注重簡單性。這就是為什么 Go 語言的語法受到 C 家族的啟發。其他輸入,例如來自 Pascal,您可以在聲明和包中注意到。其他靈感來自 Newsqueak 和 Limbo - 他們幫助創建了 Go 的并發方面。這使得這種編程語言融合了這些不同解決方案的最佳功能。

它叫Golang還是Go?我們回答

Go 編程語言通常稱為 Golang。這是為什么?原因很簡單 - 當時“go.org”域名不可用,因此程序員決定推出 golang.org(Go 和語言的混合體)。因此,官方語言名稱是 Go,但官方 Twitter 標簽是#golang。

什么是 Go 語言?

牢記上述所有內容,Robert Griesemer、Rob Pike 和 Ken Thompson 將 Go 打造為一種可編譯、并發、垃圾收集、靜態類型的語言。他們希望由精通編程的程序員為社區打造最有效的語言。

Golang 語言有何特別之處?

盡管已有 12 年的歷史,Go 仍然越來越受歡迎,它是一種常用的編程語言,因為它在一個方便的包中提供了獨特的優勢。Go 流行的另一個原因是 Go 是一種旨在創建后端的通用語言(GPL)。在 2012 年的 Strange Loop 會議上,Andrew Gerrand 將 Go 介紹為“優雅增長的代碼”。Golang 的一些優勢(如下所列)證明這個引用仍然是最新的。

Go Proverbs是關于 Go 本質的有力引用列表。Rob Pike 說“ Gofmt 的風格沒人喜歡,但 gofmt 卻是每個人都喜歡的。” 即使,特別是在開始時,您對使用大括號等的必要性不滿意,但最終您會欣賞 gofmt。只有一種標準在運行——而不是像大多數編程語言那樣有多種約定。Gofmt 作為一款專用工具,在市場上非常出色,對于保持凝聚力確實有幫助。

代碼簡單

Go 的語法相對較小,并且大致保持不變,沒有任何大的變化。更重要的是,只有一種標準代碼格式(由fmt工具生成)。Go 語法缺乏變化也對開發人員有幫助。它幾乎保持不變,因此代碼不會過于復雜,并且無需學習新的范例或語法。這使得它變得透明、易于學習和理解。所有這一切都可以歸結為 Go 創建者的一句話:兼容性的承諾。如果您使用新版本的 Go,幾乎所有用舊版本編程語言編寫的程序仍然可以編譯和運行,不需要任何更改。這使得它非常容易維護。

適合 Go 開發人員的最佳 IDE 和編輯器

作為一個開源項目,Go 提供了對所需開發工具的輕松訪問。有多種:

IDE:

JetBrains 的 GoLand 是一款跨平臺 IDE,具有動態錯誤檢測和修復建議、一步撤消重構、智能代碼完成、死代碼檢測、文檔提示和 git 集成等功能。

GoClipse - 支持 Go 編程語言的 Eclipse IDE。

LiteIDE - 這個開源和跨平臺解決方案包括可配置的構建命令、代碼編輯器和管理以及廣泛的 Go 支持。

Zeus IDE 是一款適用于 Windows 平臺的 IDE,借助用于自動完成、文檔和代碼導航的 gocode 以及用于自動代碼格式化的 gofmt 和 goimports 等工具,使開發人員的工作更加輕松。

編輯:

VSCode - 具有廣泛 Go 支持的代碼編輯器,提供語言代碼導航、符號搜索、括號匹配和片段等功能。

和插件:

VIM-go - 這個定期更新的 Vim 插件提供 Go 包編譯、折疊和語法突出顯示以及集成的 delve 支持。

比這些工具更有趣的是,Go 創建者建立了一個在線環境,您可以在其中測試用 Go 編程語言編寫的產品 - Go Playground。

Go 編程語言速度很快

關于 Go 的普遍看法是它是一種快速的編程語言。這些不僅僅是空話——這個比較清楚地證明了這一點。與 Python 相比,這些數字顯然有利于 Go 一方。

但如果我們談論速度,究竟是什么讓 Go 語言脫穎而出呢?答案可能是 Goroutines,它同時執行活動。Goroutine 是由 Go 運行時管理的輕量級線程。它比操作系統中的線程消耗更少的資源,并且當您比較這兩種解決方案時,創建它們的成本肯定更低。

并發范式

如果一個程序支持并發范例,則意味著它可以在重疊的時間段內(看似)同時處理多個任務/操作。Go 原生支持并發范式,它允許多線程、多處理和異步。Golang 運行時調度程序有助于管理創建并需要處理器時間的所有操作(Goroutines)。通道也有幫助——這些類型化的管道同步 Goroutines 并使它們之間的通信更加高效和流暢。

這些并不是工程師愿意使用的唯一 Go 功能 - 依賴管理、運行時反射的強大功能、垃圾收集和組件也是 Golang 的顯著優勢。

在 CodiLime,我們在許多項目中利用了 Golang 的優勢 - 例如當我們構建微服務安全平臺時為我們的客戶。

Golang 在實踐中最適合做什么

云原生開發

由于其并發性和網絡功能以及高度的可移植性,Go 對于構建云原生應用程序非常有用。云原生計算的幾個支柱,例如 Docker、Kubernetes 和 Istio,實際上是使用 Go 編程語言構建的。

各種網絡服務

并發是網絡應用程序的命脈,Go 的原生并發特性(主要是 goroutine 和通道)非常適合此類任務。因此,很多 Go 項目對于網絡、分布式任務和云服務很有用,例如 API、Web 服務器和 Web 應用程序的簡單框架。

獨立工具和實用程序

Go 是一種編譯語言,這意味著應用程序被編譯成二進制文件。這些二進制文件本身幾乎沒有外部依賴項,并且幾乎可以在任何地方運行。由于 Go 中的程序啟動速度快,并且可以輕松打包以進行重新分發,因此它們對于開發實用程序和其他工具非常有用。一個實例是訪問服務器 Teleport(用于 SSH 等)。通過下載預構建的二進制文件或從源代碼構建它,Teleport 可以快速、簡單地安裝在服務器上。

有哪些知名公司使用Go語言?

Go 的功能對許多行業都有幫助。這是事實,但并沒有讓任何事情變得更清楚!這就是為什么我選擇了一些(在我看來)最有趣的案例研究。您可以在Go 語言網站上找到決定在其項目中依賴 Go 的公司的完整列表。

谷歌

由 Google 開發人員創建的編程語言現在支持 Google 解決方案。Chrome優化指南服務就是其中之一。這項基于 Go 的服務會為您的頁面加載提供改進建議(以及實施更改的最佳時間)。另一個是 Firebase,它是 Google Cloud 客戶的托管移動平臺。最開始只是用Go寫了一個小服務。當應用程序開發完成后,工程師決定用 Go 語言完全替換 Node.js 后端代碼。

這兩個只是一個示例 - Google 在其他有趣的項目中使用 Go 。

kubernetes

Kubernetes 最初是由 Google 建立的,所以我將它們放在一起。現在,它是由云原生計算基金會開發的一個單獨的項目。這個用于管理容器化工作負載和服務的開源容器編排系統是由 Google 創建的。而且,您毫無疑問可以猜到,它是用 Go 語言編寫的。使用這種編程語言的決定并不是家庭關系的結果,而是由于 Go 的快速工具、高質量的庫和垃圾收集。

Uber

Uber 使用 AresDB——一個用 Go 編程語言編寫的實時分析儀表板。它使公司能夠有效地統一、簡化和改進實時分析數據庫解決方案。AresDB 使用 Go 開發,允許 Uber 放棄第三方數據庫解決方案并在內部保留深入分析。

Docker

Docker, Inc. 產品(也稱為 Docker)是一種 PaaS(平臺即服務),可以在容器中交付軟件。正如您可能猜到的,Docker 是用 Go 構建的。工程師的選擇是基于 Go 在 Linux 中工作的能力(作為選定的初始操作系統),以及將 Docker 的功能合并到其環境中的用戶友好路徑。本文解釋了為什么“Docker 找不到比 Go 更好的合作伙伴”。

PayPal

這家公認的跨國金融技術公司支持在線匯款,是支票和匯票等傳統紙質方法的替代方案。他們的支付處理平臺是用 C++ 開發的,但代碼的復雜性減慢了平臺現代化流程的速度。Go 被選為簡化和開發平臺的解決方案。

Dropbox

Dropbox 是一種用于存儲和共享文件以及項目協作的托管服務。隨著基礎設施的發展,Dropbox 團隊開始尋找更有效地擴展系統的解決方案。這就是為什么他們將關鍵的性能關鍵后端從 Python 轉移到 Go,因為它具有更好的并發支持和執行速度。但還有更多 - Dropbox 的一些使用 Go 編程語言構建的庫是開源的 - 示例可以在他們的網站上找到。這些用例展示了 Go 在特定環境中的表現。

什么時候 Golang 不是您項目的最佳選擇?

Go 的缺點

沒有一種解決方案適合所有用戶和案例。這同樣適用于 Go 語言。有何障礙?

有限的泛型支持——很長一段時間,Go 沒有泛型。最后,在 Go 1.18 中,引入了泛型類型和函數。然而,泛型并沒有得到完全支持。例如,具有通用參數的方法未實現。

較小的默認庫 - 您可能會注意到缺少函數,例如字符串和數字。

在某些情況下,Go 可能太簡單 - 您可能會錯過諸如 map 或 reduce 之類的函數 - Go 編程語言不提供它們。

就像其他所有編程語言一樣,Go 也有其弱點。在我看來,了解它們至關重要,這樣您才能選擇最能滿足您需求的解決方案。

何時押注 Golang 語言

每種編程語言都有權衡,Golang 也不例外。例如,Python 中的腳本可以編寫得更快,因為沒有強制的編碼風格和更多的語法糖,而 Go 可能需要更多的努力來生成代碼,因為它具有更明確的語法。

毫無疑問,Go 是一門有前途的語言,但它有特定的用途。它主要用于API/RPC服務和編寫CLI。人們對在不同領域使用 Go有著濃厚的興趣,但一些開發人員在這些領域工作時面臨著特定的障礙。Golang 主要是由 Google 開發的,旨在解決硬件資源受限的軟件可擴展性問題。Go 對于解決處理時間瓶頸問題也很有用。

用戶群不斷擴大的后期公司的后端經常難以跟上活動量。由于 Golang 支持并發功能并具有最小的內存占用,因此它非常適合服務器必須處理高需求的后端應用程序。

Golang 是一種編程語言,Dropbox 使用它來有效管理其超過 5 億客戶的網絡。該語言也非常適合開發每月接待數百萬訪問者的電子商務網站。資源密集型服務 Docker、Terraform 和 Kubernetes 均由 Golang 提供支持。

Go 背后有一個強大的社區 - 在GitHub上,您可以找到一系列有用的信息:有關如何開始和使用 Go 語言的有用鏈接、其他知識來源、Slack 頻道、Go 會議的日期,但這還不是全部。還有許多書籍和播客值得您關注。當新版本發布時,即使是 Go 創建者仍然會自己撰寫新的博客文章 - 開發人員可以提供他們的想法并做出貢獻。總之,這一切都增強了社區和語言本身的能力。

Go 語言的局限性

選擇編程語言時,在做出決定之前了解其局限性非常重要。它將節省您的時間和金錢。

iOS應用程序開發

這是有爭議的,但許多人聲稱 Golang 可能為構建 iOS 應用程序設置了限制。如果您訪問此類故障排除論壇,您會發現開發人員在回答有關基于 Golang 的 iOS 應用程序開發的問題時遇到問題。

此外,對于只想在 Android 和 iOS 項目中使用一種語言的開發人員來說,Go 并不是一個完美的解決方案。因此,Go的發展有一定的局限性,并不總是一帆風順。隨著 Golang 的發展,應該預計 iOS 開發工具也會得到改進。

不可調節

那些支持動態類型語言的人認為這種靜態類型語言的編碼靈活性較低。當然,這是此類編程語言的本質,但在為您的產品選擇最合適的選項時值得了解。

Go的未來發展

未來的 Go 開發將越來越關注其開發者社區的偏好和要求,Go 的維護者會修改語言以更好地服務于這些受眾,而不是樹立嚴格的先例。泛型就是一個典型的例子,在關于如何進行的激烈爭論之后,泛型最終被納入到語言中。

2021 年 Go 開發者調查表明,雖然 Go 用戶普遍對該語言的功能感到滿意,但仍有很大的發展空間。依賴管理、Go 中的一個長期問題、錯誤診斷和可靠性是用戶請求更改的首要領域,而內存利用率、CPU 使用率、二進制大小和構建時間等問題受到的關注要少得多。

Go 的速度和開發簡易性尚未在其他情況下得到充分利用,其在企業開發中的利用仍是未知數。然而,Go 作為一種重要的編程語言的未來已經確定,尤其是在云中,它的速度和易用性使得構建可長期保持的可擴展基礎設施變得更加容易。

結論

Go 編程語言仍然不如 Python 流行,但它已經在開發者世界中嶄露頭角。其簡約的語法、創新的 Goroutines 而不是典型的線程以及廣泛的工具甚至讓美國運通、Cloudflare、Facebook、微軟和 Netflix 等大公司都信服。該列表顯示了世界各地有多少家公司正在使用 Go 編程語言。它的長度令人印象深刻,而且還在不斷增長。如果您想知道是否給 Go 一個機會,也許這個建議會告訴您。在我看來,沒有比社區更好、更有力的見證了。

“優雅地增長的代碼”也會隨著支持性社區和強大的可用工具而增長。這使得 Go 編程語言成為一個有競爭力且值得關注的選擇。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Go
    Go
    +關注

    關注

    0

    文章

    43

    瀏覽量

    12273
  • 編程語言
    +關注

    關注

    10

    文章

    1951

    瀏覽量

    35017
  • 編輯器
    +關注

    關注

    1

    文章

    806

    瀏覽量

    31305

原文標題:Go 編程語言 - 你應該知道的一切

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    關于ZigBee協議的一切都在這篇文章里

    關于ZigBee,下文采用問答形式向你詳細地介紹了方方面面,不夸口的說,所需要知道的關于ZigBee的一切,全在這里了!
    發表于 06-13 01:07 ?1457次閱讀

    如何選擇的第編程語言

    ?對此 Udacity 表示用戶選擇應該根據四大標準來確定自己首次接觸的編程語言。首先是編程語言的應用范圍例如你想要開發
    發表于 07-14 14:35

    Go語言及Beego框架環境搭建相關資料推薦

    1、Go語言及Beego框架環境搭建  在開始環境搭建之前,我們先起來看看:  Go有什么優勢:  不用虛擬機,它可直接編譯成機器碼,除了glibc外沒有其他外部依賴,部署十分方便,
    發表于 10-17 16:57

    一切從游戲開始_python

    一切從游戲開始_python
    發表于 03-19 11:23 ?7次下載

    淺析關于ZigBee的一切

    本文采用問答形式向你詳細地介紹了方方面面,不夸口的說,所需要知道的關于 ZigBee的一切,在這里基本可以了解到!
    的頭像 發表于 08-22 17:14 ?5468次閱讀

    GO語言簡介!GO是理想的編程語言嗎?

    技術實力毋容置疑,不過這哥倆都是玩Kernel的,經歷相同,理念相近,分歧會比較少,他們也都坦承C用得最多最熟,所以注定了GO的類C特性,不過這會不會導致GO設計上的思維火花不足,對OOP以及現代編程思想的支持不足,亦未可知。
    的頭像 發表于 04-29 09:47 ?4431次閱讀
    <b class='flag-5'>GO</b><b class='flag-5'>語言</b>簡介!<b class='flag-5'>GO</b>是理想的<b class='flag-5'>編程</b><b class='flag-5'>語言</b>嗎?

    C語言編程入門的必做題知道

    本文檔的主要內容詳細介紹的是C語言編程入門的必做題知道
    發表于 11-05 08:00 ?0次下載

    芯片緊缺,正在影響一切硬件

    芯片緊缺,正在影響一切硬件,大到汽車,小到產線上的每個充電器、藍牙耳機。
    的頭像 發表于 12-29 14:22 ?4661次閱讀

    Go語言憑借什么成為云原生第一語言的?

    發展勢頭強勁,憑借其簡潔、高效的特性,在競爭激烈的編程語言市場中占據了席之地。 如果Go 的發展趨勢還不明朗的話,不妨仔細看看我后面
    的頭像 發表于 04-22 10:15 ?3236次閱讀
    <b class='flag-5'>Go</b><b class='flag-5'>語言</b>憑借什么成為云原生第<b class='flag-5'>一語言</b>的?

    世界上最賺錢的編程語言是什么?

    許多人因為薪資高而選擇編程行業,但知道什么是世界上最賺錢的編程語言嗎?話不多說,讓我們用數據來證明一切
    的頭像 發表于 05-11 11:38 ?2812次閱讀
    世界上最賺錢的<b class='flag-5'>編程</b><b class='flag-5'>語言</b>是什么?

    go語言枚舉類型怎么用

    go 語言枚舉類型是這么用的?在什么場景下會用到枚舉?本文對 go 語言枚舉做了詳細講解。 枚舉,是種重要的數據類型,由
    的頭像 發表于 09-02 09:43 ?5244次閱讀

    關于數字電位器 (POT) 你想知道一切

    關于數字電位器 (POT) 你想知道一切
    發表于 11-14 21:08 ?0次下載
    關于數字電位器 (POT) 你想<b class='flag-5'>知道</b>的<b class='flag-5'>一切</b>

    關于步進電機需要知道一切

    關于步進電機需要知道一切
    發表于 03-07 16:58 ?2118次閱讀
    關于步進電機<b class='flag-5'>你</b>需要<b class='flag-5'>知道</b>的<b class='flag-5'>一切</b>

    海爾智家:一切皆為用戶體驗!

    一切從用戶需求出發,一切為了用戶的智慧家庭生活體驗。
    的頭像 發表于 04-25 13:35 ?594次閱讀

    文件系統-一切皆文件的設計理念

    所謂一切皆文件就是指計算機操作系統將一切計算機的可用資源都映射成文件形式向使用者提供統的操作方式。
    的頭像 發表于 10-11 10:10 ?655次閱讀
    主站蜘蛛池模板: 亚洲三级网 | 99久久成人国产精品免费 | 久久久久久99 | 日本色片视频 | 日本一区二区三区在线观看视频 | 黄色一级视频欧美 | 一级毛片不收费 | 99国产国人青青视频在线观看 | 免费欧美黄色 | h在线免费| 欧美午夜视频在线观看 | 美女扒开下面让男人捅 | 播色屋 | 午夜视频网 | 亚洲一区二区中文 | 国产午夜在线视频 | 免费在线播放毛片 | 色婷婷激婷婷深爱五月小说 | 精品国产自在在线在线观看 | 午夜免费视频网站 | 欧美极品第1页专区 | 真实的国产乱xxxx在线 | 1区2区3区| 成年女人毛片免费观看97 | 亚洲欧美视频 | 黄色一级毛片看一级毛片 | 色中色官网 | 久久黄色录像 | 国产三级a三级三级天天 | 成人久久网 | 欧美做a欧美 | 黄a视频| 色无欲天天天影视综合网 | 亚洲一本之道在线观看不卡 | 成人综合在线视频 | 亚洲黄色三级视频 | 国产精品成人免费观看 | 一级午夜 | 视色4se视频在线观看 | 日韩亚洲人成在线综合日本 | 又粗又长又大又黄的日本视频 |