Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎(chǔ)的讀者快速入門,也適合工作多年的程序員查閱知識點(diǎn)。
成都創(chuàng)新互聯(lián)專注于會寧企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開發(fā)。會寧網(wǎng)站建設(shè)公司,為會寧等地區(qū)提供建站服務(wù)。全流程按需設(shè)計網(wǎng)站,專業(yè)設(shè)計,全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
Go 語言
這套教程在講解一些知識點(diǎn)時,將 Go 語言和其他多種語言進(jìn)行對比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發(fā),無須第三方庫、開發(fā)者的編程技巧和開發(fā)經(jīng)驗(yàn)就可以輕松搞定。
Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對外發(fā)布。Go 是非常年輕的一門語言,它的主要目標(biāo)是“兼具 Python 等動態(tài)語言的開發(fā)速度和 C/C++ 等螞穗編譯型語言的性能與安全性”。
Go語言是編程語言設(shè)計的又一次嘗試,是對類C語言的重大改進(jìn),它不但能讓你訪問底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。
Go語言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有絕瞎“部署簡單、并發(fā)性好、語言設(shè)計良好、執(zhí)行性能好”等優(yōu)勢,目前國內(nèi)諸多 IT 公司均已采用Go語言開發(fā)項(xiàng)目。Go語言有時候被描述為“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語言有一個清晰易懂的輕量級類型系統(tǒng),在類型之間也沒有層級之說。因此可以說Go語言是一門混合型的語言。
此外,很多重要的開源項(xiàng)目都是使用Go語言開發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時,編譯器檢查錯誤、優(yōu)化性能并輸出可在不同平臺上運(yùn)行的二進(jìn)制文件。要創(chuàng)建并運(yùn)行 Go 程序,程序員必須執(zhí)行如下步驟。
使用文本編輯器創(chuàng)建 Go 程序;
保存文件;編譯程序;運(yùn)行編譯得到的可執(zhí)行文件。
這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步悶宏卜驟。Go 自帶了編譯器,因此無須單獨(dú)安裝編譯器。
鏈喬教育在線旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開展的“智慧學(xué)習(xí)工場2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準(zhǔn)的“區(qū)塊鏈技術(shù)專業(yè)”試點(diǎn)工作站。專業(yè)站立足為學(xué)生提供多樣化成長路徑,推進(jìn)專業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。
作為C語言家族的一員,go和c一樣也支持結(jié)構(gòu)體??梢灶惐扔趈ava的一個POJO。
在學(xué)習(xí)定義結(jié)構(gòu)體之前,先學(xué)習(xí)下定義一個新類型。
新類型 T1 是基于 Go 原生類型 int 定義的新自定義類型,而新類型 T2 則是 基于剛剛定義的類型 T1,定義的新類型。
這里要引入一個底層類型的概念。
如果一個新類型是基于某個 Go 原生類型定義的, 那么我們就叫 Go 原生類型為新類型的底層類型
在上面的例子中,int就是T1的底層類型。
但是T1不是T2的底層類型,只有原生類型才可以作為底層類型,所以T2的底層類型還是int
底層類型是很重要的,因?yàn)閷蓚€變量進(jìn)行顯式的類型轉(zhuǎn)換,只有底層類型相同的變量間才能相互轉(zhuǎn)換。底層類型是判斷兩個類型本質(zhì)上是否相同的根本。
這種類型定義方式通常用在 項(xiàng)目的漸進(jìn)梁讓式重構(gòu),還有對已有包的二次封裝方面
類型別名表示新類型和原類型完全等價,實(shí)際上就是同一種類型。只不過名字不同而已。
一般我們都是定義一個有名的結(jié)構(gòu)體。
字段名的大小寫決定了字段是否包外可用。只有大寫的字段可以被包外引用。
還有一個點(diǎn)提一下
如果換行來寫
Age: 66,后面這個都好不能省略
還有一個點(diǎn),觀察e3的賦值
new返回的是一個指針。然后指針可以直接點(diǎn)號賦值。這說明go默認(rèn)進(jìn)行了取值操作
e3.Age 等價于 (*e3).Age
如上定義了一個空的結(jié)構(gòu)體Empty。打印了元素e的內(nèi)存大小是0。
有什么用呢?
基于空結(jié)構(gòu)體類型內(nèi)存零開銷這樣的特性,我們在日常 Go 開發(fā)中會經(jīng)常使用空 結(jié)構(gòu)體類型元素,作為一種“事件”信息進(jìn)行 Goroutine 之間的通信
這種以空結(jié)構(gòu)體為元素類建立的 channel,是目前能實(shí)現(xiàn)的、內(nèi)存占用最小的 Goroutine 間通信方式。
這種形式需要說的是幾個語法糖。
語法糖1:
對于結(jié)構(gòu)體字段,可以省略字段名,只寫結(jié)構(gòu)體名。默認(rèn)字段名就是結(jié)構(gòu)體名
這種方式稱為 嵌入字段
語法糖2:
如果是以嵌入字段形式寫的結(jié)構(gòu)體
可以省略嵌入的Reader字段,而直接訪問ReaderName
此時book是一個各個屬性全是對應(yīng)類型零值的一個實(shí)例。不是nil。這種情況在Go中稱為零值可用。不像java會基灶導(dǎo)致npe
結(jié)構(gòu)體定義時可以在字段后面追加標(biāo)簽說明。
tag的格式為反單引號
tag的橡鋒局作用是可以使用[反射]來檢視字段的標(biāo)簽信息。
具體的作用還要看使用的場景。
比如這里的tag是為了幫助 encoding/json 標(biāo)準(zhǔn)包在解析對象時可以利用的規(guī)則。比如omitempty表示該字段沒有值就不打印出來。
黑馬程序員最近剛出握仔了一套go語言的彎顫教程,我剛看了一些,從基礎(chǔ)講起,很適合新手學(xué),聽說,黑馬的c/c++的課程中,將加入go語埋皮敗言的教學(xué)。
《Go 語言程序設(shè)計》(Mark Summerfield)電子書網(wǎng)盤下載免費(fèi)在線閱讀
資源鏈接:
鏈接:
提取碼:br6t ?
書名:Go 語言程序設(shè)計
作者:Mark Summerfield
譯者:許式偉
豆瓣評分:6.9
出版社:人民郵電出版社
出版年份:2013-8-1
頁數(shù):354
內(nèi)容簡介:
國外最經(jīng)典的Go語言著作,Go語言編程的先驅(qū)者M(jìn)ark Summerfield的實(shí)踐經(jīng)驗(yàn)總結(jié)。
這是一本Go語言實(shí)戰(zhàn)指南,幫你了解Go語言,按Go語言的方式思考,以及使用Go語言來編寫高性能軟件。
作者展示了如何編寫充分利用Go語言突破性的特性和慣用法的代碼,以及Go語言在其他語言之上所做的改進(jìn),并著重強(qiáng)調(diào)了Go語言的關(guān)鍵創(chuàng)新。
注重實(shí)踐教學(xué),每章都提供了多個經(jīng)過精心設(shè)計的代碼示例。
由國內(nèi)第一個核心服務(wù)完全采用Go語言實(shí)現(xiàn)的團(tuán)隊(duì)——七牛團(tuán)隊(duì)核心成員翻譯。
作者簡介:
Mark Summerfield Qtrac公司創(chuàng)始人,獨(dú)立的培訓(xùn)講師、顧問、技術(shù)編輯,Go、Python、C++、Qt和PyQt方面的技術(shù)作家。他的著作包括明如Rapid GUI Programming with Python and Qt、C++ GUI Programming with Qt 4(與Jasmin Blanchette合著)、Programming in Python 3和Advanced Qt Programming等。
許式偉——七牛云存儲CEO,開源愛好者,發(fā)布過十余個C++開源項(xiàng)目,擁有超過激陵啟15年的C/C++開發(fā)經(jīng)驗(yàn)。
呂桂華——七牛云存儲聯(lián)合創(chuàng)始人,擁有十余年的C/C++大型項(xiàng)目開發(fā)經(jīng)驗(yàn),也曾在Java和.NET平臺上汪敬探索多年。
徐 立——七牛云存儲首席布道師,前盛大創(chuàng)新院高級研究員。
何李石——七牛云存儲布道師。
七牛云存儲技術(shù)團(tuán)隊(duì)是國內(nèi)第一個核心服務(wù)完全采用Go語言實(shí)現(xiàn)的團(tuán)隊(duì)。