首頁 後端開發 Golang go語言可以程式設計嗎

go語言可以程式設計嗎

Dec 27, 2022 am 10:30 AM
golang go語言

go語言可以程式設計。 Go語言是由Google公司開發的靜態強類型、編譯型、並髮型、並具有垃圾回收功能的程式語言;Go語言的用途眾多,可進行網頁程式設計、系統程式設計、並發程式設計、分散式程式設計。 Go語言作為伺服器程式語言,很適合處理日誌、資料打包、虛擬機器處理、檔案系統、分散式系統、資料庫代理程式等;也可進行網路應用、API應用、下載應用程式等網路程式設計。

go語言可以程式設計嗎

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

Go語言也稱為 Golang,是由 Google 公司開發的一種靜態強型別、編譯型、並髮型、並具有垃圾回收功能的程式語言。

Go語言(或 Golang)起源於 2007 年,並在 2009 年正式對外發布。 Go 是非常年輕的語言,它的主要目標是「兼具 Python 等動態語言的開發速度和 C/C 等編譯型語言的效能與安全性」。

Go語言是程式語言設計的另一個嘗試,是對類C語言的重大改進,它不僅能讓你存取底層作業系統,還提供了強大的網路程式設計和並發程式支援。 Go語言的用途眾多,可以進行網路程式設計、系統程式設計、並發程式設計、分散式程式設計:

  • 伺服器編程,以前你如果使用C或C 做的那些事情,用Go來做很合適,例如處理日誌、資料打包、虛擬機器處理、檔案系統等。

  • 分散式系統、資料庫代理程式、中介軟體等,例如Etcd。

  • 網路編程,這一塊目前應用最廣,包括網路應用程式、API應用程式、下載應用,而且Go內建的net/http套件基本上把我們平常用到的網路功能都實現了。

Go語言的推出,旨在不損失應用程式效能的情況下降低程式碼的複雜性,具有“部署簡單、並發性好、語言設計良好、執行效能好”等優勢,目前國內諸多IT 公司均已採用Go語言開發專案。

許多重要的開源專案都是使用Go語言開發的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。

國內外有哪些企業或專案使用Go語言

Go發布之後,許多公司特別是雲端運算公司開始用Go重構他們的基礎架構,很多都是直接採用Go進行了開發,最近熱火朝天的Docker就是採用Go開發的。

使用 Go 語言開發的開源專案非常多。早期的Go 語言開源專案只是透過Go 語言與傳統專案進行C語言庫綁定實現,例如Qt、Sqlite 等;後期的許多專案都使用Go 語言進行重新原生實現,這個過程相對於其他語言要簡單一些,這也促成了大量使用Go 語言原生開發專案的出現。

  • 雲端運算基礎架構領域

    代表專案:docker、kubernetes、etcd、consul、cloudflare CDN、七牛雲端儲存等。

  • 基礎軟體

    代表專案:tidb、influxdb、cockroachdb等。

  • 微服務

    代表專案:go-kit、micro、monzo bank的typhon、bilibili等。

  • 網路基礎設施

    代表專案:以太坊、hyperledger等。

採用Go的一些國外公司,如Google、Docker、Apple、Cloud Foundry、CloudFlare、Couchbase、CoreOS、Dropbox、MongoDB、AWS等公司;

採用Go開發的國內企業:如阿里雲CDN、百度、小米、七牛、PingCAP、華為、金山軟體、獵豹行動、餓了麼等公司。

go語言可以程式設計嗎

Docker

#Docker 是一種作業系統層面的虛擬化技術,可以在作業系統和應用程序之間進行隔離,也可以稱為容器。 Docker 可以在一台實體伺服器上快速執行一個或多個實例。基於lxc的一個虛擬打包工具,能夠實現PAAS平台的組成。例如,啟動一個 CentOS 作業系統,並在其內部命令列執行指令後結束,整個過程就像自己在作業系統一樣有效率。

go語言

Go 語言自己的早期原始碼使用C語言和組合語言寫成。從 Go 1.5 版本後,完全使用 Go 語言自行編寫。 Go 語言的原始碼對了解 Go 語言的底層調度有極大的參考意義,建議希望對 Go 語言有深入了解的讀者讀一讀。

Kubernetes

Google 公司開發的建置於 Docker 之上的容器排程服務,使用者可以透過 Kubernetes 叢集進行雲端容器叢集管理。

etcd

一款分散式、可靠的 KV 儲存系統,可以快速進行雲端配置。

beego

#

beego 是一個類似 Python的 Tornado 框架,採用了 RESTFul 的設計思路,​​使用 Go 語言編寫的一個極輕量級、高可擴展性和高效能的 Web 應用框架。

martini

一款快速建立模組化的 Web 應用的 Web 框架。

codis

國產的優秀分散式 Redis 解決方案。

delve

Go語言強大的偵錯器,被許多整合環境和編輯器整合。

Facebook

Facebook也在用,為此他們還專門在Github上建立了一個開源組織facebookgo,大家可以透過訪問查看facebook開源的項目,例如著名的是平滑升級的grace。

騰訊

騰訊作為國內的大公司,還是敢於嘗試的,尤其是Docker容器化這一塊,他們在15年已經做了docker萬台規模的實踐,具體可以參考

http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice

百度

目前所知的百度的使用是在維運這邊,是百度運維的一個BFE項目,負責前端流量的存取。他們的負責人在2016年有分享,大家可以看下這篇http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend

#其次就是百度的訊息系統。負責公司手百訊息通訊系統伺服器端開發及維護。

京東

京東雲端訊息推送系統、雲端存儲,以及京東商城等都有使用Go做開發。

小米

小米對Golang的支持,莫過於維運監控系統的開源,也就是 http://open-falcon.com/ 。

此外,小米互娛、小米商城、小米影片、小米生態鍊等團隊都在使用Golang。

360

360對Golang的使用也不少,一個是開源的日誌搜尋系統Poseidon,託管在Github上,

#還有360的推播團隊也在使用,他們也寫了部落格文章在Golang的官方部落格上。

美團

美團後台流量支撐程式。應用範圍:支撐主站後台流量(排序,推薦,搜尋等),提供負載平衡,cache,容錯,依條件分流,統計運行指標(qps,latency)等功能。

滴滴

基礎服務平台。

金山微看

應用範圍:服務接口,後台流程服務,訊息系統,圖片系統

##搜尋狗

搜狗推送系統。 Push系統中用來維持與客戶端連結的部分。

。 。 。 。 。

寫在最後

當然,一個技術能不能發展起來,關鍵還要看三點。 (以下觀點引自https://www.cnblogs.com/qwangxiao/p/8318894.html)

• 有沒有一個比較好的社群。像是 C、C 、Java、Python 和 JavaScript 的生態圈都是非常豐富且火辣的。尤其是有很多商業機構參與的社群那就更為人氣爆棚了,像是 Linux 的社群。

• 有沒有一個工業化的標準。像 C、C 、Java 都是有標準化組織的。尤其是 Java,其在架構上也搞出了像 J2EE 這樣的企業級標準。

• 有沒有一個或多個殺手級應用程式。 C、C 和Java 的殺手級應用不用多說了,就算是對於PHP 這樣還不能算是一個好的程式語言來說,因為是Linux 時代的第一個殺手級解決方案LAMP 中的關鍵技術,所以,也發展起來了。上述的這三點是非常關鍵的,新的技術只需要占到其中一到兩點就已經很不錯了,何況有的技術,比如Java,是三點全佔到了,所以,Java 的發展是如此好。

當然,除了上面這三點重要的,還有一些其它的影響因素,例如:

  • 學習曲線是否低,上手是否快。這點非常重要,C 在這點上越做越不好了。
  • 有沒有一個不錯的提高開發效率的開發框架。如:Java 的 Spring 框架,C 的 STL 等。
  • 是否有一個或多個巨型的科技公司作為後盾。如:Java 和 Linux 後面的 IBM、Sun…
  • 有沒有解決軟體開發中的痛點。如:Java 解決了 C 和 C 的記憶體管理問題。
用這些尺來量一下Go 語言,我們可以清楚地看到:

  • Go 語言容易上手;

  • Go 語言解決了並發程式設計和寫入底層應用開發效率的痛點;

  • #Go 語言有Google 這個世界一流的科技公司在後面;

  • Go 語言的殺手級應用是Docker,而Docker 的生態圈在這幾年完全爆棚了。

所以,Go 語言的未來是不可限量的。當然,Go 可能會吞食很多 C、C 、Java 的專案。不過,Go 語言所吞食主要的項目應該是中間層的項目,既不是非常底層也不會是業務層。也就是說,Go 語言不會吞食底層到 C 和 C 那個等級的,也不會吞食到高層如 Java 業務層的專案。 Go 語言能吞食的一定是PaaS 上的項目,例如一些訊息快取中間件、服務發現、服務代理、控制系統、Agent、日誌收集等等,沒有複雜的業務場景,也到不了特別底層(如操作系統)的中間平台層的軟體專案或工具。而 C 和 C 會被打到更底層,Java 會被打到更上層的業務層。

好了,我們再用上面的尺來量一下 Go 語言的殺手級應用程式 Docker,你會發現基本上是一樣的。

  • Docker 上手很容易。

  • Docker 解決了維運中的環境問題以及服務排程的痛點。

  • Docker 的生態圈中有大公司在後面助力。如 Google。

  • Docker 產出了工業界標準 OCI。

  • Docker 的社群和生態圈已經出現像 Java 和 Linux 的態勢。

【相關推薦:Go影片教學程式設計教學

以上是go語言可以程式設計嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Go語言中用於浮點數運算的庫有哪些? Go語言中用於浮點數運算的庫有哪些? Apr 02, 2025 pm 02:06 PM

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

Go的爬蟲Colly中Queue線程的問題是什麼? Go的爬蟲Colly中Queue線程的問題是什麼? Apr 02, 2025 pm 02:09 PM

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

Go語言中`var`和`type`關鍵字定義結構體的區別是什麼? Go語言中`var`和`type`關鍵字定義結構體的區別是什麼? Apr 02, 2025 pm 12:57 PM

Go語言中結構體定義的兩種方式:var與type關鍵字的差異Go語言在定義結構體時,經常會看到兩種不同的寫法:一�...

在 Go 語言中,為什麼使用 Println 和 string() 函數打印字符串會出現不同的效果? 在 Go 語言中,為什麼使用 Println 和 string() 函數打印字符串會出現不同的效果? Apr 02, 2025 pm 02:03 PM

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...

Go語言中哪些庫是由大公司開發或知名的開源項目提供的? Go語言中哪些庫是由大公司開發或知名的開源項目提供的? Apr 02, 2025 pm 04:12 PM

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

GoLand中自定義結構體標籤不顯示怎麼辦? GoLand中自定義結構體標籤不顯示怎麼辦? Apr 02, 2025 pm 05:09 PM

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

在Go語言中使用Redis Stream實現消息隊列時,如何解決user_id類型轉換問題? 在Go語言中使用Redis Stream實現消息隊列時,如何解決user_id類型轉換問題? Apr 02, 2025 pm 04:54 PM

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

VSCode中如何解決Golang泛型函數類型約束被自動刪除的問題? VSCode中如何解決Golang泛型函數類型約束被自動刪除的問題? Apr 02, 2025 pm 02:15 PM

VSCode中Golang泛型函數類型約束的自動刪除問題在使用VSCode編寫Golang代碼時,用戶可能會遇到一個奇怪的問題。當...

See all articles