Go語言筆記(一)-函式定義 ,package,for迴圈,變數大小寫
go函式定義:
func (物件名 類名) 函式名(輸入陣列,值型別)(輸出變數,型別){
函式體
}
go中的package
√ package是golang最基本的分發單位和工程管理中依賴關係的體現。
√ 每個golang原始碼檔案開頭都擁有一個package宣告,表示該golang程式碼所屬的package。
√ 要生成golang可執行程式,必須建立一個名為main的package,並且在該package中必須包含一個名為main()的函式。
√ 在golang工程中,同一個路徑下只能存在一個package,一個package可以拆成多個原始檔組成。
√ import關鍵字匯入的是package路徑,而在原始檔中使用package時,才需要package名。經常可見的import的目錄名和原始檔中使用的package名一致容易造成import關鍵字後即是package名的錯覺,真正使用時,這兩者可以不同。
import的一些修飾操作:
點(.)表示呼叫該包中函式時可以省略字首包名。
別名操作,可以在import後package路徑之前直接加上一個別名,今後在使用的過程中直接使用這個別名即可使用該路徑。
下劃線(_)操作,import後面接下劃線,表示不匯入整個包,而是執行該包中的init函式。
用go實現一個簡單的for迴圈:
go中,import的所有包的路徑都必須使用,不然就會報錯,imported but not used,就像上述程式裡面的sync,如果不加上註釋的話,就會報以下錯誤。
當我們把程式修改一下,通過一個channel來接收i的值,然後再把channel裡面存的值輸出。
注意,這裡特意用紅圈圈出來了func後面的這個括號,那麼這個括號是什麼含義呢?如果你直接在main函式裡面定義一個函式,那麼這個函式僅僅只是定義,卻不會執行,加上了這個括號,就代表了定義並執行,這時的輸出結果和之前是一樣的。
channel在定義的時候,不僅可以定義資料型別,而且可以定義改channel是傳送資料還是接收資料,以及該channel緩衝區的size。
go中變數或者函式名稱的大小寫:
一個大型的工程往往有很多的package,裡面更是有成千上萬個函式,這些函式,或者說是成員函式,有些是不希望其它的包訪問的,這時採取的辦法,就是把函式的名字定義成小寫字母開頭,如果其它包有訪問的許可權,就把變數或函式的名字變成大寫字母開頭。