1.創(chuàng)建一個文件夾,例如:golang入門到項目實戰(zhàn)
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供西固企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計制作、成都做網(wǎng)站、H5場景定制、小程序制作等業(yè)務(wù)。10年已為西固眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
2.在golang入門到項目實戰(zhàn)文件夾中創(chuàng)建一個go文件,例如:test.go
3.在test.go中輸入如下內(nèi)容:
4.編譯執(zhí)行g(shù)o run test.go
5.可僅選擇編譯執(zhí)行g(shù)o build test.go,則目錄下會多出個exe程序
接口像是一個公司里面的領(lǐng)導(dǎo),他會定義一些通用規(guī)范,只設(shè)計規(guī)范,而不實現(xiàn)規(guī)范。
go語言的接口,是一種新的類型定義,它把所有的具有共性的方法定義在一起,任何其他類型只要實現(xiàn)了這些方法就是實現(xiàn)了這個接口。
語法格式和方法非常類似。
在接口定義中定義,若干個空方法。這些方法都具有通用性。
下面我定義一個USB接口,有讀read和寫write兩個方法,再定義一個電腦Computer和一個手機(jī)Mobile來實現(xiàn)這個接口。
USB接口
Computer結(jié)構(gòu)體
Mobile結(jié)構(gòu)體
Computer實現(xiàn)USB接口方法
Mobile實現(xiàn)USB接口方法
測試
運(yùn)行結(jié)果
下面我們定義一個OpenClose接口,里面有兩個方法open和close,定義個Door結(jié)構(gòu)體,實現(xiàn)其中一個方法。
go語言沒有面向?qū)ο蟮奶匦?,也沒有類對象的概念。但是,可以使用結(jié)構(gòu)體來模擬這些特性,我們都知道面向?qū)ο罄锩嬗蓄惙椒ǖ雀拍?。我們也可以聲明一些方法,屬于某個結(jié)構(gòu)體。
Go中的方法,是一種特殊的函數(shù),定義域struct之上(與struct關(guān)聯(lián)、綁定),被稱為struct的接受者(receiver)。通俗的講,方法就是有接收者的函數(shù)。
語法格式如下:
mytype:定義一個結(jié)構(gòu)體
recv:接受該方法的結(jié)構(gòu)體(receiver)
my_method:方法名稱
para:參數(shù)列表
return_type:返回值類型
從語法格式可以看出,一個方法和一個函數(shù)非常相似,多了一個接受類型。
實例
運(yùn)行結(jié)果
Go提供了一種稱為通道的機(jī)制,用于在goroutine之間共享數(shù)據(jù)。當(dāng)您作為goroutine執(zhí)行并發(fā)活動時,需要在goroutine之間共享資源或數(shù)據(jù),通道充當(dāng)goroutine之間的管道(管道)并提供一種機(jī)制來保證同步交換。
根據(jù)數(shù)據(jù)交換的行為,有兩種類型的通道:無緩沖通道和緩沖通道。無緩沖通道用于執(zhí)行g(shù)oroutine之間的同步通信,而緩沖通道用于執(zhí)行異步通信。無緩沖通道保證在發(fā)送和接收發(fā)生的瞬間兩個goroutine之間的交換。緩沖通道沒有這樣的保證。
通道由make函數(shù)創(chuàng)建,該函數(shù)指定chan關(guān)鍵字和通道的元素類型。
這是創(chuàng)建無緩沖和緩沖通道的代碼塊:
語法
使用內(nèi)置函數(shù)make創(chuàng)建無緩沖和緩沖通道。make的第一個參數(shù)需要關(guān)鍵字chan,然后是通道允許交換的數(shù)據(jù)類型。
這是將值發(fā)送到通道的代碼塊需要使用-運(yùn)算符:
語法
一個包含5個值的緩沖區(qū)的字符串類型的goroutine1通道。然后我們通過通道發(fā)送字符串“Australia”。
這是從通道接收值的代碼塊:
語法
- 運(yùn)算符附加到通道變量(goroutine1)的左側(cè),以接收來自通道的值。
在無緩沖通道中,在接收到任何值之前沒有能力保存它。在這種類型的通道中,發(fā)送和接收goroutine在任何發(fā)送或接收操作完成之前的同一時刻都準(zhǔn)備就緒。如果兩個goroutine沒有在同一時刻準(zhǔn)備好,則通道會讓執(zhí)行其各自發(fā)送或接收操作的goroutine首先等待。同步是通道上發(fā)送和接收之間交互的基礎(chǔ)。沒有另一個就不可能發(fā)生。
在緩沖通道中,有能力在接收到一個或多個值之前保存它們。在這種類型的通道中,不要強(qiáng)制goroutine在同一時刻準(zhǔn)備好執(zhí)行發(fā)送和接收。當(dāng)發(fā)送和接收阻塞時也有不同的條件。只有當(dāng)通道中沒有要接收的值時,接收才會阻塞。僅當(dāng)沒有可用緩沖區(qū)來放置正在發(fā)送的值時,發(fā)送才會阻塞。
實例
運(yùn)行結(jié)果
應(yīng)用于搭建 Web 服務(wù)器,存儲集群或類似用途的巨型中央服務(wù)器的系統(tǒng)編程語言。
Go 是谷歌的編程語言,而不是社區(qū)的。在這位博主看來,雖然 Go 語言擁有一個貢獻(xiàn)者社區(qū),但是它并不是社區(qū)的項目,只是谷歌的一個項目。所以只要是谷歌反對的東西,沒有人可以把這個東西加到 Go 語言中。
InfoQ 記者也第一時間聯(lián)系了《Go 并發(fā)編程實戰(zhàn)》作者、前輕松籌大數(shù)據(jù)負(fù)責(zé)人郝林,他的觀點(diǎn)是:Go 語言是大家的,只有偽愛好者才會談舍棄。在郝林看來,Go 語言官方團(tuán)隊在谷歌內(nèi)部實屬一個很小的團(tuán)隊,但其成員幾乎個個都是技術(shù)大神。
很多社區(qū)成員為 Go 語言貢獻(xiàn)了很多重要并且有價值的東西,這些從貢獻(xiàn)者和提交者的多樣性就可以看出來。但谷歌作為整個 Go 社區(qū)的守門人,它獨(dú)自決定什么東西可以被 Go 語言接受,什么不能被接受。
在 Go 語言模塊系統(tǒng)上發(fā)生的一件事情,谷歌 Go 語言核心團(tuán)隊的一名成員放棄了由外部 Go 社區(qū)開發(fā)的一個模塊系統(tǒng),因為它使用了另一種不同的模型。Go 語言擁有一個貢獻(xiàn)者社區(qū),但是它并不是一個社區(qū)項目。
Go語言。他主要是在一些網(wǎng)頁版的服務(wù)器中用于系統(tǒng)編程的一種語言。他是谷歌開發(fā)的一種編程語言。在一定程度上,谷歌有一定的壟斷作用。不能隨隨便便的在語言當(dāng)中添加其他的語言成分。