【Go從學會到學廢】(零) Golang簡介

Go 語言簡介

imgGo 是一個開源的編程語言,它能讓構造簡單、可靠且高效的軟件變得容易。linux

Go是從2007年底由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發佈了Go 1穩定版本。如今Go的開發已是徹底開放的,而且擁有一個活躍的社區。golang

Go 語言特點

  • 簡潔、快速、安全
  • 並行、有趣、開源
  • 內存管理、數組安全、編譯迅速

Go 語言的優點

  • 可直接編譯成機器碼,不依賴其餘庫,glibc的版本有必定要求,部署就是扔一個文件上去就完成了。shell

  • 靜態類型語言,可是有動態語言的感受,靜態類型的語言就是能夠在編譯的時候檢查出來隱藏的大多數問題,動態語言的感受就是有不少的包可使用,寫起來的效率很高。數據庫

  • 語言層面支持併發,這個就是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年十月編程語言排行榜

image-20201014214711270

我的觀點:

  • Go併發通道接口是真的好用。誰用誰知道!
  • 簡潔高效
  • 面向接口,不能new一個對象,對單身狗極不友好

轉載於:

做者:Serdar Yegulalp原文連接:10 open source projects proving the power of Google Go譯者:Go 語言中文網 polaris ,非原文直譯方式

做者:jking10 原文連接:Go語言特色

做者:菜鳥教程 原文連接:Go 語言教程

相關文章
相關標籤/搜索