Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎(chǔ)的讀者快速入門,也適合工作多年的程序員查閱知識(shí)點(diǎn)。
目前創(chuàng)新互聯(lián)建站已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、青白江網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
Go 語言
這套教程在講解一些知識(shí)點(diǎn)時(shí),將 Go 語言和其他多種語言進(jìn)行對(duì)比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發(fā),無須第三方庫、開發(fā)者的編程技巧和開發(fā)經(jīng)驗(yàn)就可以輕松搞定。
Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對(duì)外發(fā)布。Go 是非常年輕的一門語言,它的主要目標(biāo)是“兼具 Python 等動(dòng)態(tài)語言的開發(fā)速度和 C/C++ 等編譯型語言的性能與安全性”。
Go語言是編程語言設(shè)計(jì)的又一次嘗試,是對(duì)類C語言的重大改進(jìn),它不但能讓你訪問底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。
Go語言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡(jiǎn)單、并發(fā)性好、語言設(shè)計(jì)良好、執(zhí)行性能好”等優(yōu)勢(shì),目前國(guó)內(nèi)諸多 IT 公司均已采用Go語言開發(fā)項(xiàng)目。Go語言有時(shí)候被描述為“C 類似語言”,或者是“21 世紀(jì)的C語言”。Go 從C語言繼承了相似的表達(dá)式語法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語言一直所看中的編譯后機(jī)器碼的運(yùn)行效率以及和現(xiàn)有操作系統(tǒng)的無縫適配。
因?yàn)镚o語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來并不相同。但是它通過接口(interface)的概念來實(shí)現(xiàn)多態(tài)性。Go語言有一個(gè)清晰易懂的輕量級(jí)類型系統(tǒng),在類型之間也沒有層級(jí)之說。因此可以說Go語言是一門混合型的語言。
此外,很多重要的開源項(xiàng)目都是使用Go語言開發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時(shí),編譯器檢查錯(cuò)誤、優(yōu)化性能并輸出可在不同平臺(tái)上運(yùn)行的二進(jìn)制文件。要?jiǎng)?chuàng)建并運(yùn)行 Go 程序,程序員必須執(zhí)行如下步驟。
使用文本編輯器創(chuàng)建 Go 程序;
保存文件;編譯程序;運(yùn)行編譯得到的可執(zhí)行文件。
這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨(dú)安裝編譯器。
鏈喬教育在線旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國(guó)教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開展的“智慧學(xué)習(xí)工場(chǎng)2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準(zhǔn)的“區(qū)塊鏈技術(shù)專業(yè)”試點(diǎn)工作站。專業(yè)站立足為學(xué)生提供多樣化成長(zhǎng)路徑,推進(jìn)專業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。
如果有其他語言基礎(chǔ)的話,直接類比學(xué)習(xí)就好了。如果沒有話那就先得熟悉編程思維,在掌握語言具體用法.
用 Go 編程的感覺很棒。庫程序里有我想要的一切,總體實(shí)現(xiàn)較為完善。學(xué)習(xí)體驗(yàn)也十分順暢,不得不說,Go 是一種經(jīng)過精心設(shè)計(jì)的實(shí)用性語言。舉個(gè)例子:一旦你知悉了 Go 的語法,就能將其他語言中慣用法延續(xù)到 Go 中。只要你學(xué)會(huì)一些 Go,就可以相對(duì)輕易地推測(cè) Go 語言的其他特性。憑借一些來自其他語言的知識(shí),我能夠閱讀并理解 Go 代碼,而不需要過多的搜索
剛?cè)腴TGo語言小白需要注意以下五點(diǎn):
1、注意書寫代碼的一些規(guī)范吧,特別是注意大小寫、英文標(biāo)點(diǎn)符號(hào)區(qū)別等,在特別的位置寫上注釋。
2、主要是理解偽代碼所描述的算法,偽代碼要注意是不能直接運(yùn)行的。
3、注意編譯器版本與書籍上所介紹版本是否一致,也注意特殊符號(hào),印刷版本可能與實(shí)際不一致。
4、書上的版本和當(dāng)前所用的版本是否一致,有些情況下書上版本在現(xiàn)在來用已經(jīng)過時(shí)了。
5、邏輯走通;給自己信心,其實(shí)起步階段不難的。
Go 生態(tài)系統(tǒng)
學(xué)習(xí)基本上相當(dāng)直接的。我們之前在 C/C++/Java/Objective-C/PHP 的經(jīng)驗(yàn)讓我們學(xué)習(xí) Go 相當(dāng)快,并且在幾天內(nèi)就開始開發(fā)了。當(dāng)然會(huì)有一些新的和不常見的東西需要學(xué)習(xí),包括 GOPATH 還有如何處理包,但這在我們的預(yù)期之內(nèi)。
幾天之內(nèi),我們意識(shí)到即使是一個(gè)以簡(jiǎn)化為設(shè)計(jì)目的的語言,Go 也是非常強(qiáng)大的。它能夠做任何現(xiàn)代編程語言應(yīng)該能做的事:能夠處理 JSON、服務(wù)器之間通訊甚至訪問數(shù)據(jù)庫也沒問題(并且只需要幾行代碼)。
在構(gòu)建一個(gè)服務(wù)器時(shí),你應(yīng)該首先決定是否使用任何第三方庫或者框架。對(duì)于 Bugfender,我們決定使用:
Martini
Martini 是一個(gè)強(qiáng)大的 Go 的 web 框架。我們開始這個(gè)實(shí)驗(yàn)時(shí),它是一個(gè)很棒的解決方案,至今也是,我們還沒遇到任何問題。然而如果我們今天再次開始這個(gè)實(shí)驗(yàn)的話,我們會(huì)選擇一個(gè)不同的框架,因?yàn)?Martini 不在維護(hù)了。
Gorm
有些人喜歡 ORM,而有些人則不喜歡。我們決定使用 ORM,更確切地說是 GORM。我們的實(shí)現(xiàn)只針對(duì) web 前端,對(duì)于日志提取 API 仍然繼續(xù)使用手工優(yōu)化的 SQL。在一開始,我們確實(shí)很喜歡它,但是隨著時(shí)間的推移,我們開始發(fā)現(xiàn)問題,并且我們很快將它從代碼中完全移除,并且使用 sqlx 這個(gè)標(biāo)準(zhǔn) SQL 庫。
GORM 的一個(gè)主要問題是 Go 的生態(tài)系統(tǒng)。作為一個(gè)新語言,自我們開始開發(fā)產(chǎn)品以來 Go 已經(jīng)有很多新版本。在這些新版本中的一些改變并不向后兼容,因此要使用最新的庫版本,我們要經(jīng)常重寫已有代碼并檢查我們?yōu)榻鉀Q版本問題所做的 hack。