[喵咪Golang(1)]Go語言開篇
#[喵咪Golang(1)]Go語言開篇#
##前言##
哈嘍大家好啊!喵咪我今天又來開坑了,最近學習和使用了go語言了一段時間,也在組合一些好的元件編寫phalgo開發框架.在想是不是可以來寫一個套關於go語言的文章和一些好的元件的介紹使用,雖然自己也是半桶水但是我相信在編寫的過程中能給自己很多收穫,最好也能幫助大家瞭解和熟悉golang這門語言,話不多說那麼就開始今天的go語言之旅吧~
附上:
喵了個咪的部落格:w-blog.cn
phalgo地址:github.com/wenzhenxi/phalgo
Go語言聖經:docs.ruanjiadeng.com/gopl-zh
##1. go語言的誕生
如果是計算機專業出生的童鞋都聽過貝爾實驗室一詞,這就是誕生著名的UNIX系統和C語言的地方,經過了40年在同一個地方Google工作的Ken Thompson和Rob Pike還有Robert Griesemer一同設計了Go語言,目的是為了解決在21世紀多核和網路化環境下越來越複雜的程式設計問題.
Go語言是從Ken Thompson發明的B語言、Dennis M. Ritchie發明的C語言逐步演化過來的,是C語言家族的成員,因此很多人將Go語言稱為21世紀的C語言。縱觀這幾年來的發展趨勢,Go語言已經成為雲端計算、雲端儲存時代最重要的基礎程式語言。
就筆者玩了一段時間的感受,go語言是C語言的衍生有C語言的特色,畢竟被稱為21世紀的C語言,並且go也從一些現代語言中吸收了很多優秀的地方,比如C語言不具備的GC機制,介面機制,還有很多新的特性,而且在編譯時可以大幅縮短時間,相對於C++的十分之一
下圖展示了有哪些早期的程式語言對Go語言的設計產生了重要影響。
go語言至今版本歷史:
2007年,谷歌工程師Rob Pike, Ken Thompson和Robert Griesemer開始設計一門全新的語言,這是Go語言的最初原型。 2009年11月10日,Go語言以開放原始碼的方式向全球釋出。 2011年3月16日,Go語言的第一個穩定(stable)版本r56釋出。 2012年3月28日,Go語言的第一個正式版本Go1釋出。 2013年4月04日,Go語言的第一個Go 1.1beta1測試版釋出。 2013年4月08日,Go語言的第二個Go 1.1beta2測試版釋出。 2013年5月02日,Go語言Go 1.1RC1版釋出。 2013年5月07日,Go語言Go 1.1RC2版釋出。 2013年5月09日,Go語言Go 1.1RC3版釋出。 2013年5月13日,Go語言Go 1.1正式版釋出。 2013年9月20日,Go語言Go 1.2RC1版釋出。 2014年6月19日,Go語言Go 1.3版釋出。 2015年8月20日,Go語言Go 1.5版釋出,本次更新中移除了”最後殘餘的C程式碼”。 2016年1月07日,Go語言Go 1.6版釋出, Go1.6開始全面支援 HTTP/2 大幅改善GC效能
2.go語言特性
go裡面有很多有意思的特性,筆者根據自己使用和收集了以下幾點:
- Go 語言是一門型別安全和記憶體安全的程式語言。雖然 Go 語言中仍有指標的存在,但並不允許進行指標運算
- Go 語言語法結構與動態語言的易開發性進行有機結合,開發效率和效能都比較平衡
- Go 語言的對於網路通訊、併發和並行程式設計的極佳支援,從而更好地利用大量的分散式和多核的計算機
- Go 語言編譯速度非常快一般只需要幾百毫秒
- Go 語言自帶GC垃圾回收機制來解決記憶體問題
- Go 語言語法乾淨、整齊和簡潔,關鍵字的數量僅僅25個
- Go 語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來並不相同。但是它通過介面(interface)的概念來實現多型性。
- Go 語言支援交叉編譯,比如說你可以在執行 Linux 系統的計算機上開發執行下 Windows 下執行的應用程式。
更具以上特性,相信大家對go的也有了一個抽象的定位了
3.go語言著名專案
###Docker
到現在,Docker幾乎是Go再難找到也難以複製的一個成功案例。Docker專案在2014年9月份就拿到了C輪4000萬美元融資,版本迭代速度超快,目前從GitHub看到已有78個版本,而它僅僅是再2013年初才正式開始的一個專案而已。
Docker團隊之所以喜歡用Go語言,主要是Go具有強大的標準庫、全開發環境、跨平臺構建的能力。
GitHub託管地址: https://github.com/docker/docker
###Lime
Revel是一個高生產力的Go語言Web框架。Revel框架支援熱編譯,當編輯、儲存和重新整理原始碼時,Revel會自動編譯程式碼和模板;全棧特性,支援路由、引數解析、快取、測試、國際化等功能。
GitHub託管地址: https://github.com/revel/revel
###InfluxDB
一個Go語音編寫的開源分散式的時序、事件和指標資料庫,無需外部依賴。其設計目標是實現分散式和水平伸縮擴充套件。
GitHub託管地址: https://github.com/influxdb/influxdb
###Gogs
Gogs則是一款由國人無聞( GitHub)開發的自助Git服務專案。Gogs的目標是打造一個最簡單、最快速和最輕鬆的方式搭建自助Git服務。據作者稱,之所以選擇使用Go語言開發,就是Go允許Gogs可以通過獨立的二進位制分發,且對跨平臺有良好支援。
GitHub託管地址: https://github.com/gogits/gogs
##4. 總結##
我們回顧一下我們主要講解了go語言的歷史,它是一個什麼樣子的語言它的特性是怎麼樣的,有那些有名的開源專案,大家是不是對go語言充滿了期待,也充滿了疑惑呢,那麼就請大家帶著期待帶著疑惑的心裡,來進入下一篇的GO語言-安裝與Helloworld篇吧!
注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!