go語言可以程式設計。Go語言是由Google公司開發的一種靜態強型別、編譯型、並行型、並具有垃圾回收功能的程式語言;Go語言的用途眾多,可以進行網路程式設計、系統程式設計、並行程式設計、分散式程式設計。Go語言作為伺服器程式語言,很適合處理紀錄檔、資料打包、虛擬機器器處理、檔案系統、分散式系統、資料庫代理等;也可進行Web應用、API應用、下載應用等網路程式設計。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
Go語言也稱為 Golang,是由 Google 公司開發的一種靜態強型別、編譯型、並行型、並具有垃圾回收功能的程式語言。
Go語言(或 Golang)起源於 2007 年,並在 2009 年正式對外發布。Go 是非常年輕的一門語言,它的主要目標是「兼具 Python 等動態語言的開發速度和 C/C++ 等編譯型語言的效能與安全性」。
Go語言是程式語言設計的又一次嘗試,是對類C語言的重大改進,它不但能讓你存取底層作業系統,還提供了強大的網路程式設計和並行程式設計支援。Go語言的用途眾多,可以進行網路程式設計、系統程式設計、並行程式設計、分散式程式設計:
伺服器程式設計,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理紀錄檔、資料打包、虛擬機器器處理、檔案系統等。
分散式系統、資料庫代理器、中介軟體等,例如Etcd。
網路程式設計,這一塊目前應用最廣,包括Web應用、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、華為、金山軟體、獵豹移動、餓了麼等公司。
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也在用,為此他們還專門在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 的發展是如此好。
當然,除了上面這三點重要的,還有一些其它的影響因素,比如:
用這些標尺來量一下 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語言可以程式設計嗎的詳細內容,更多請關注TW511.COM其它相關文章!