go基礎知識體系

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

        整個知識體系圍繞邏輯結構來的話,是面向過程,圍繞對象來的話,是物件導向。所以一個知識體系可以從欄位,函數,結構體入手,再到詳細編碼的邏輯結構,也就是面向過程進行加深。然後是指標,異常機制,IO,並發等。有了基本架構之後才是網路,後台等進階特性。

        需要注意的是go語言的設計基本上遵循盡量簡化的原則進行,就是能簡化就簡化,當然,也有部分奇怪的沒有簡化的,但是這也是因為有其他的考量原因。


欄位:

1.資料操作。包括基礎資料型別 (Elementary Data Type)的定義以及操作,運算,切片等。注意指標。

2.欄位在結構體中可以是匿名欄位。

3.array,map,slice是進階結構體。array是數組,而slice針對數組進行的切片處理。map是映射。使用range遍曆。

4.平行賦值i,j=i+1,j+1.這個一般用在if中。

結構體:

1.結構體的定義。在go中類是結構體與函數疊加而成。而結構體就是演算法與結構中的“結構”。

2.type用於重定義資料,定義結構體,介面。

3.go更加接近理論,所以在go中類,方法,變數,被叫做結構體,函數,欄位。.



函數:

1.函數的定義。在go中都是函數,而屬於結構體的函數可以稱為方法。

2.函數有匿名函數。

3.func funcName(input1 type1, input2 type2) (output1 type1, output2 type2) {
    //這裡是處理邏輯代碼
    //返回多個值
    return value1, value2
}

欄位和返回欄位可以簡化。如input1,input2 type。這其實就是如果當前沒有就往後面找。

4.注意變參func(arg...int)



流程式控制制:

1.if參照了for,可以使用;分號隔開,前面的是變數聲明。

2.switch的case後面內建break,想要往下執行需要使用fallthrough。switch跟的語句如果沒有添加,那麼就是true。

3.for格式如果省略了分號,那麼就相當於while。for range可以用於讀取slice和map的資料。

4.goto是跳躍陳述式。



指標:

1.string,slice,map都是基於指標的機制了,可以直接傳遞,不需要再取地址傳指標操作。但是注意slice的長度發生變化的話,仍需取地址傳指標。

2.結構體指標函數的使用需要注意。



運算式:

1.go不支援三元運算式。也就是說一個n:=expr?trueV:falseV在這裡不能使用。



異常:

1.go中,異常處理使用panic(),recover(),defer聯合使用。panic拋出異常中斷,如果想要回複,可以在defer中使用recover恢複。但是go中,盡量少用異常處理。



IO:

1.go中使用make()建立切片,映射,程道。返回對象,而new()返回的是指標。

2.chan分為有緩衝和無緩衝兩種。

3.chan作為線程件通訊的IO通道。

4.常使用select,case,default組合chan進行操作。



並發:

1.並發裡面主要是多線程以及常用的輔助類等。

2.並發的內容一般包含:

(1)線程的初始化。線程的實現是go xxx,這個過程叫做gorutine。

(2)線程的通訊。通過channel進行通訊。注意,這裡channel本身是具有鎖功能的,往往作為最簡單常用的鎖進行使用

(3)線程對於資源的操作。這裡主要是同步非同步,阻塞和非阻塞等概念。

        同步非同步關鍵在於互斥,而阻塞和非阻塞關鍵在於鎖。但是兩者其實很接近。

        所以往往出現的是互斥鎖。這裡常用的是sync.Mutext.Lock()實現互斥鎖。使用lock.Lock()實現鎖。runtime模組往往用於運行時候的一些操作,協助線程實現讓出時間片,線程退出等操作。atomic模組是原子操作。其他的一些類和函數是基於這些概念進行的擴充。

(4)並發的架構?





並行:?










聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.