go 學習筆記(1) package

2021-09-07 20:23:55 字數 2176 閱讀 4199

引入包有以下幾種方式:

1. 最簡單的方式引入乙個包的方式是直接引入包,例如:

import "fmt"

import "os"

2. 也可以通過下面的方式將包一塊引入,並寫在括號內:

import(

"fmt"

"os"

)

通過上面的方式,可以引入系統包或第三方的包,下面重點介紹如何引入自定義的包和函式:

一般我們將主程式放在src的main資料夾下(主程式中包含main函式,並將主程式的包名寫為package main),將其他模組放在相應的資料夾下,例如下圖所示

主函式在main.go檔案中,主函式名也可以為其他,但必須包含main函式。在go程式設計中,怎麼引入自己編寫的模組呢,例如在main.go中如何呼叫add.go、subtract.go或者是multiply.go中的檔案。

add.go與subtract.go在cal資料夾下,所以這兩個程式的包名為cal(package cal),multiply.go在multi資料夾下,所以程式的包名為multi(package multi)。如果main函式要呼叫add.go或者subtract.go中的函式,必須要引入包"cal"(import "cal")。要呼叫multiply.go中的函式,那就要引入包"multi",如果我們在程式中直接寫import "multi",編譯器會提示我們can not find package "multi"。因為我們的"multi"包在包"cal"下,所以我們要把包名寫完整"cal/multi",下面就可以呼叫各個檔案中的函式了。

go中如果函式名的首字母大寫,表示該函式是公有的,可以被其他程式呼叫,如果首字母小寫,該函式就是是私有的,因此我們只能呼叫add.go、subtract.go或者multiply.go中的公有函式。具體呼叫如下圖:

最後注意:檔名可以和該包名不一致,但檔案中使用的包名必須要和該包名一致。

包的命名

go語言的包的命名,遵循簡潔、小寫、和go檔案所在目錄同名的原則,這樣就便於我們引用,書寫以及快速定位查詢。對於在企業當中開發的程式而言,我們一般採用網域名稱作為頂級包名的方式,這樣就不用擔心和其他開發者包名重複的問題了,比如公司的網域名稱是`www.bboyhan.com`,那麼開發的go程式都以`bboyhan.com`作為全路徑中的最頂層部分,匯入開發的工具包則可以寫為:

當把乙個go檔案的包名宣告為main時,就等於告訴go編譯程式,這是乙個可執行程式,那麼go編譯程式就會嘗試把它編譯為乙個二進位制的可執行檔案。如果沒有這個函式,程式就無法執行。

go編譯器又是如何去尋找各個檔案、包之間的依賴關係而構建程式的呢?

環境變數goroot和gopath兩個概念,這是兩個定義路徑的環境變數,goroot是安裝go的路徑,比如 c:\go ;gopath是我們自己定義的開發者個人的工作空間,比如c:\workspace\src\bbboyhan。

編譯器會使用我們設定的這兩個路徑,再加上import匯入的相對全路徑來查詢磁碟上的包,比如我們匯入的fmt包,編譯器最終找到的是 c:\go\fmt 這個位置。對於包的查詢,是有優先順序的,編譯器會優先在goroot裡搜尋,其次是gopath,一旦找到,就會馬上停止搜尋。如果最終都沒找到,就會報編譯異常了。

go 學習筆記(1) package

引入包有以下幾種方式 1.最簡單的方式引入乙個包的方式是直接引入包,例如 import fmt import os 2.也可以通過下面的方式將包一塊引入,並寫在括號內 import fmt os 通過上面的方式,可以引入系統包或第三方的包,下面重點介紹如何引入自定義的包和函式 一般我們將主程式放在s...

Go語言學習筆記(八)包(package)

go語言的原始碼服用建立在包 package 基礎之上。go語言的入口main 函式所在的包叫main,main包想要引用別的 必須同樣以包的方式進行引用。go語言的包與資料夾一一對應,所有與包相關的操作,必須依賴於工作目錄gopath。zk ubuntu go echo gopath zk ubu...

go學習筆記(1)

練習一下go的語法,對比 ruby,nodejs,php。go語法看起來坑比nodejs ruby多很多,至少在語法看起來容易造成很多困擾,這也是要看習慣不習慣問題。go的語法和概念和之前學習過物件導向程式設計,多少有一些區別。你還會忍受不了這麼的語法。go1.9的版本,對於還在看語法過程。還在磨合...