1.創(chuàng)建一個文件夾,例如:golang入門到項目實戰(zhàn)
創(chuàng)新互聯(lián)是一家專業(yè)提供沾化企業(yè)網站建設,專注與成都網站制作、成都做網站、H5頁面制作、小程序制作等業(yè)務。10年已為沾化眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網站制作公司優(yōu)惠進行中。
2.在golang入門到項目實戰(zhàn)文件夾中創(chuàng)建一個go文件,例如:test.go
3.在test.go中輸入如下內容:
4.編譯執(zhí)行go run test.go
5.可僅選擇編譯執(zhí)行go build test.go,則目錄下會多出個exe程序
go語言沒有面向對象的特性,也沒有類對象的概念。但是,可以使用結構體來模擬這些特性,我們都知道面向對象里面有類方法等概念。我們也可以聲明一些方法,屬于某個結構體。
Go中的方法,是一種特殊的函數(shù),定義域struct之上(與struct關聯(lián)、綁定),被稱為struct的接受者(receiver)。通俗的講,方法就是有接收者的函數(shù)。
語法格式如下:
mytype:定義一個結構體
recv:接受該方法的結構體(receiver)
my_method:方法名稱
para:參數(shù)列表
return_type:返回值類型
從語法格式可以看出,一個方法和一個函數(shù)非常相似,多了一個接受類型。
實例
運行結果
Go提供了一種稱為通道的機制,用于在goroutine之間共享數(shù)據(jù)。當您作為goroutine執(zhí)行并發(fā)活動時,需要在goroutine之間共享資源或數(shù)據(jù),通道充當goroutine之間的管道(管道)并提供一種機制來保證同步交換。
根據(jù)數(shù)據(jù)交換的行為,有兩種類型的通道:無緩沖通道和緩沖通道。無緩沖通道用于執(zhí)行goroutine之間的同步通信,而緩沖通道用于執(zhí)行異步通信。無緩沖通道保證在發(fā)送和接收發(fā)生的瞬間兩個goroutine之間的交換。緩沖通道沒有這樣的保證。
通道由make函數(shù)創(chuàng)建,該函數(shù)指定chan關鍵字和通道的元素類型。
這是創(chuàng)建無緩沖和緩沖通道的代碼塊:
語法
使用內置函數(shù)make創(chuàng)建無緩沖和緩沖通道。make的第一個參數(shù)需要關鍵字chan,然后是通道允許交換的數(shù)據(jù)類型。
這是將值發(fā)送到通道的代碼塊需要使用-運算符:
語法
一個包含5個值的緩沖區(qū)的字符串類型的goroutine1通道。然后我們通過通道發(fā)送字符串“Australia”。
這是從通道接收值的代碼塊:
語法
- 運算符附加到通道變量(goroutine1)的左側,以接收來自通道的值。
在無緩沖通道中,在接收到任何值之前沒有能力保存它。在這種類型的通道中,發(fā)送和接收goroutine在任何發(fā)送或接收操作完成之前的同一時刻都準備就緒。如果兩個goroutine沒有在同一時刻準備好,則通道會讓執(zhí)行其各自發(fā)送或接收操作的goroutine首先等待。同步是通道上發(fā)送和接收之間交互的基礎。沒有另一個就不可能發(fā)生。
在緩沖通道中,有能力在接收到一個或多個值之前保存它們。在這種類型的通道中,不要強制goroutine在同一時刻準備好執(zhí)行發(fā)送和接收。當發(fā)送和接收阻塞時也有不同的條件。只有當通道中沒有要接收的值時,接收才會阻塞。僅當沒有可用緩沖區(qū)來放置正在發(fā)送的值時,發(fā)送才會阻塞。
實例
運行結果
函數(shù)的go語言中的一級公民,我們把所有的功能單元都定義在函數(shù)中,可以重復使用。函數(shù)包含函數(shù)的名稱、參數(shù)列表和返回值類型,這些構成了函數(shù)的簽名(signature)。
函數(shù)在使用之前必須先定義,可以調用函數(shù)來完成某個任務。函數(shù)可以重復調用,從而達到代碼重用。
go語言函數(shù)定義語法
語法解析:
go語言函數(shù)定義實例
定義一個求和函數(shù)
定義一個比較兩個數(shù)大小的函數(shù)
go語言函數(shù)調用
當我們要完成某個任務時,可以調用函數(shù)來完成。調用函數(shù)要傳遞參數(shù),如何有返回值可以獲得返回值。
運行結果