Go 語言簡介
Go 是一個開源的編程語言,它能讓構造簡單、可靠且高效的軟體變得容易,
Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發,后來還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開源,在2012年早些時候發布了Go 1穩定版本,現在Go的開發已經是完全開放的,并且擁有一個活躍的社區,
Go 語言特色
- 簡潔、快速、安全
- 并行、有趣、開源
- 記憶體管理、陣列安全、編譯迅速
Go 語言的優勢
-
可直接編譯成機器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個檔案上去就完成了,
-
靜態型別語言,但是有動態語言的感覺,靜態型別的語言就是可以在編譯的時候檢查出來隱藏的大多數問題,動態語言的感覺就是有很多的包可以使用,寫起來的效率很高,
-
語言層面支持并發,這個就是Go最大的特色,天生的支持并發,我曾經說過一句話,天生的基因和整容是有區別的,大家一樣美麗,但是你喜歡整容的還是天生基因的美麗呢?Go就是基因里面支持的并發,可以充分的利用多核,很容易的使用并發,
-
內置runtime,支持垃圾回收,這屬于動態語言的特性之一吧,雖然目前來說GC不算完美,但是足以應付我們所能遇到的大多數情況,特別是Go1.1之后的GC,
-
簡單易學,Go語言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go關鍵字是25個,但是表達能力很強大,幾乎支持大多數你在其他語言見過的特性:繼承、多載、物件等,
-
豐富的標準庫,Go目前已經內置了大量的庫,特別是網路庫非常強大,我最愛的也是這部分,
-
內置強大的工具,Go語言里面內置了很多工具鏈,最好的應該是gofmt工具,自動化格式化代碼,能夠讓團隊review變得如此的簡單,代碼格式一模一樣,想不一樣都很困難,
-
跨平臺編譯,如果你寫的Go代碼不包含cgo,那么就可以做到window系統編譯linux的應用,如何做到的呢?Go參考了plan9的代碼,這就是不依賴系統的資訊,
-
內嵌C支持,前面說了作者是C的作者,所以Go里面也可以直接包含c代碼,利用現有的豐富的C庫,
Go 語言用途
Go 語言被設計成一門應用于搭載 Web 服務器,存盤集群或類似用途的巨型中央服務器的系統編程語言,
對于高性能分布式系統領域而言,Go 語言無疑比大多數其它語言有著更高的開發效率,它提供了海量并行的支持,這對于游戲服務端的開發而言是再好不過了,
Go 語言適合用來做什么
- 服務器編程,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日志、資料打包、虛擬機處理、檔案系統等,
- 分布式系統,資料庫代理器等
- 網路編程,這一塊目前應用最廣,包括Web應用、API應用、下載應用、
- 記憶體資料庫,前一段時間google開發的groupcache,couchbase的部分組建
- 云平臺,目前國外很多云平臺在采用Go開發,CloudFoundy的部分組建,前VMare的技術總監自己出來搞的apcera云平臺,
Go 語言成功的專案
| 名稱 | 簡介 |
|---|---|
| Docker | Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用和依賴包到一個可移植的鏡像中,然后發布到任何流行的 Linux 、Mac 或 Windows 機器上,也可以實作虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面, |
| Kubernetes | Kubernetes,簡稱 k8s,是用 8 代替 8 個字符 “ubernete” 而成的縮寫,是一個開源的,用于管理云平臺中多個主機上的容器化的應用,Kubernetes 的目標是讓部署容器化的應用簡單并且高效(powerful),Kubernetes 提供了應用部署、規劃、更新、維護的一種機制, |
| Fedora CoreOS | CoreOS 是一種作業系統,于 2013 年十二月發布,它的設計旨在關注開源作業系統內核的新興使用 — 用于大量基于云計算的虛擬服務器, |
| InfluxDB | InfluxDB是一個用于存盤和分析時間序列資料的開源資料庫,是“沒有外部依賴的分布式時間序列資料庫”, |
| Istio | Istio提供一種簡單的方式來為已部署的服務建立網路,該網路具有負載均衡、服務間認證、監控等功能,而不需要對服務的代碼做任何改動, |
| Traefik | Traefik 是一個為了讓部署微服務更加便捷而誕生的現代 HTTP 反向代理、負載均衡工具, 它支持多種后臺 (Docker,Swarm,Kubernetes,Marathon,Mesos,Consul,Etcd,Zookeeper,BoltDB, Rest API, file…) 來自動化、動態的應用它的組態檔設定, |
| Hugo | Hugo 是由 Go 語言實作的靜態網站生成器,簡單、易用、高效、易擴展、快速部署, |
| Terraform | HashiCorp — 由 Vagrant(基于 Ruby 的開發環境管理工具)的開發者創辦,它充分利用 Go 的速度和強大來構建更龐大更宏偉的專案:Terraform,該系統用于通過定義檔案轉為代碼在本地或云端構建 IT 基礎架構 |
| CockroachDB | Go 常被用于構建各種分布式云原生應用程式,CockroachDB以彈性而聞名,這種分布式資料庫旨在承受各種各樣的災難(甚至是資料中心故障),而能繼續回應你的 SQL 查詢, |
| Gravitational Teleport | Go 已成為許多網路專案以及基于它們的下游專案的默認語言,一個典型的例子是:用 Go 實作的 SSH 本身就很有用,充當Gravitational Teleport[38]等專案的基礎,Gravitational Teleport 讓用戶可以通過 shell 安全地訪問服務器,它通過單點登錄來保證安全,但又不需要事務通常需要的那種管理開銷(比如密鑰管理和輪換), |
2020年十月編程語言排行榜

個人觀點:
- Go并發,通道和介面是真的好用,誰用誰知道!
- 簡潔,高效
- 面向介面,不能new一個物件,對單身狗極不友好
轉載于:
作者:Serdar Yegulalp原文鏈接:10 open source projects proving the power of Google Go譯者:Go 語言中文網 polaris ,非原文直譯方式
作者:jking10 原文鏈接:Go語言特點
作者:菜鳥教程 原文鏈接:Go 語言教程
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/247923.html
標籤:Go
