golang25個基礎關鍵詞註釋

knave發表於2021-08-12

1:break :

一個 break 的作用範圍為該語句出現後的最內部的結構,它可以被用於任何形式的 for 迴圈(計數器、條件判斷等)。但在 switch 或 select 語句中(詳見第 13 章),break 語句的作用結果是跳過整個程式碼塊,執行後續的程式碼。

2:default :

我們知道對於select語句,每個case的IO事件都是阻塞的,監聽IO事件是不會佔用CPU至滿的。造成CPU佔用的原因是這個空default,因為當case的條件不滿足時,迴圈將會走default,然後執行下一個迴圈,這就造成了死迴圈,因此在使用for-select語句的時候不能定義空的default

3:func :

func 用於定義函式和方法

4:interface

interface 型別定義了一組方法,如果某個物件實現了某個介面的所有方法,則此物件就實現了此介面。詳細的語法參考下面這個例子:

。。。

5:select :

select 預設是阻塞的,只有當監聽的 channel 中有傳送或接收可以進行時才會執行,當多個 channel 都準備好的時候,select 是隨機的選擇一個執行的。

6:case :

左花括號{必須與switch處於同一行;

 條件表示式不限制為常量或者整數;

 單個case中,可以出現多個結果選項;

 與C語言等規則相反,Go語言不需要用break來明確退出一個case;

 只有在case中明確新增fallthrough關鍵字,才會繼續執行緊跟的下一個case;

 可以不設定switch之後的條件表示式,在此種情況下,整個switch結構與多個if…else…的邏輯作用等同。

7:defer :

Go 語言中有種不錯的設計,即延遲(defer)語句,你可以在函式中新增多個 defer 語句。當函式執行到最後時,這些 defer 語句會按照逆序執行,最後該函式返回。特別是當你在進行一些開啟資源的操作時,遇到錯誤需要提前返回,在返回前你需要關閉相應的資源,不然很容易造成資源洩露等問題。如下程式碼所示,我們一般寫開啟一個資源是這樣操作的:

8:go :

go用於併發

9:map :

用於宣告map型別資料

10:struct :

Go 語言中,也和 C 或者其他語言一樣,我們可以宣告新的型別,作為其它型別的屬性或欄位的容器。例如,我們可以建立一個自定義型別 person 代表一個人的實體。這個實體擁有屬性:姓名和年齡。這樣的型別我們稱之 struct。如下程式碼所示:

11:chan :

可以通過它傳送或者接收值。這些值只能是特定的型別: channel 型別。定義一個 channel 時,也需要定義傳送到 channel 的值的型別。注意,必須使用 make 建立 channel:

12:else :

13:goto :

Go 有 goto 語句 —— 請明智地使用它。用 goto 跳轉到必須在當前函式內定義的標籤。例如假設這樣一個迴圈:

14:package :

√package是golang最基本的分發單位和工程管理中依賴關係的體現。

   √ 每個golang原始碼檔案開頭都擁有一個package宣告,表示該golang程式碼所屬的package。

   √ 要生成golang可執行程式,必須建立一個名為main的package,並且在該package中必須包含一個名為main()的函式。

   √ 在golang工程中,同一個路徑下只能存在一個package,一個package可以拆成多個原始檔組成。

   √ import關鍵字匯入的是package路徑,而在原始檔中使用package時,才需要package名。經常可見的import的目錄名和原始檔中使用的package名一致容易造成import關鍵字後即是package名的錯覺,真正使用時,這兩者可以不同。

15:switch :

有些時候你需要寫很多的 if-else 來實現一些邏輯處理,這個時候程式碼看上去就很醜很冗長,而且也不易於以後的維護,這個時候 switch 就能很好的解決這個問題。它的語法如下:

16:const :

17:fallthrough :

sExpr和expr1、expr2、expr3的型別必須一致。Go的switch非常靈活,表示式不必是常量或整數,執行的過程從上至下,直到找到匹配項;而如果switch沒有表示式,它會匹配true。 Go裡面switch預設相當於每個case最後帶有break,匹配成功後不會自動向下執行其他case,而是跳出整個switch, 但是可以使用fallthrough強制執行後面的case程式碼,fallthrough不會判斷下一條case的expr結果是否為true。

18:if :

如果滿足條件就做某事,否則做另一件事。

Go 的 if 還有一個強大的地方就是條件判斷語句裡面允許宣告一個變數,這個變數的作用域只能在該條件邏輯塊內,其他地方就不起作用了,如下所示:

多個條件的如下所示:

19:range :

range 用於讀取 slice、map、channel 資料

20:type :

type 用於宣告自定義型別

21:continue :

關鍵字continue只能被用於for迴圈中

22:for :

Go 裡面最強大的一個控制邏輯就是 for,它既可以用來迴圈讀取資料,又可以當作 while 來控制邏輯,還能迭代操作。它的語法如下:

expression1、expression2 和 expression3 都是表示式,其中 expression1 和 expression3 是變數宣告或者函式呼叫返回值之類的,expression2 是用來條件判斷,expression1 在迴圈開始之前呼叫,expression3 在每輪迴圈結束之時呼叫。

一個例子比上面講那麼多更有用,那麼我們看看下面的例子吧:

23:import :

我們在寫 Go 程式碼的時候經常用到 import 這個命令用來匯入包檔案,而我們經常看到的方式參考如下:

24:return :

return用於從函式返回

25:var :

使用 var 關鍵字是 Go 最基本的定義變數方式,與 C 語言不同的是 Go 把變數型別放在變數名後面:

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章