Go語言包和文件

工做空間

Go語言工做空間:編譯工具對源碼目錄有嚴格要求,每一個工做空間 (workspace) 必須由bin、pkg、src三個目錄組成。python

src ---- 項目源碼目錄,裏面每個子目錄,就是一個包,包內是Go語言的源碼文件。
pkg ---- Go語言編譯的.a 中間文件存放目錄,可自動生成。
bin ---- Go語言編譯可執行文件存放目錄,可自動生成。git

 

包結構

包是結構化代碼的一種方式:每一個程序都由包的概念組成,可使用自身的包或者從其它包中導入內容。編程

如同其它一些編程語言中的類庫或命名空間的概念,每一個Go文件都屬於且僅屬於一個包。一個包能夠由許多以.go爲擴展名的源文件組成,所以文件名和包名通常來講都是不相同的。編程語言

包聲明 "package + 包名" ,必須在源文件中非註釋的第一行指明這個文件屬於哪一個包。
如:package main。package main表示一個可獨立執行的程序,每一個Go應用程序都包含一個名爲 main 的包。函數

同一個包(package)下面,能夠有很是多的不一樣文件,只要每一個文件的頭部都有相同name就能夠,如 "package oldboy" 。文件夾名字能夠和這個package名稱不一致。工具

標準庫

在Go的安裝文件裏包含了一些能夠直接使用的包,即標準庫。
Go語言標準庫包,覆蓋了幾乎全部的基礎庫,提供了豐富普遍的功能特性。
標準庫的內容還可能繼續增長,你們能夠經過在線查閱庫API或使用godoc(包含在Go發佈包中)來獲取最新信息以及全面瞭解每一個包所具有的功能。spa

第三方庫

經過"go get + 完整包名"保存下載第三方庫。code

在執行go get 命令以前,確保你的電腦配置了環境變量GOPATH,而且安裝git。blog

導出包

Go語言中根據首字母的大小寫來肯定能夠訪問的權限。若是首字母大寫,則能夠被其餘的包訪問;若是首字母小寫,則只能在本包中使用。該規則適用於全局變量、全局常量、類型、結構字段、函數、方法等。get

能夠簡單的理解成,首字母大寫是公有的,首字母小寫是私有的。

在導入包以後,你只能訪問包所導出的名字,任何未導出的名字是不能被包外的代碼訪問的。

導入包

使用包成員前,必須先用import關鍵字導入,但不能造成導入循環。

import用法:

第一種,導入系統包。

import "fmt" 

第二種,相對路徑導入包,導入同一目錄下 test 包中的內容

import "./test" 

第三種,絕對路徑導入包,導入 gopath/src/oldboy/python 包中的內容。

import "oldboy/python"

第四種,導入包並啓用別名。

導入fmt,並給他啓別名f

import f "fmt"

將fmt啓用別名".",這樣就能夠直接使用其內容,而不用再添加fmt。
如fmt.Println能夠直接寫成Println。

import . "fmt" 

第五種,"import _"

import  _ "fmt"  

表示不使用該包,而是隻是使用該包的init函數,並不顯示的使用該包的其餘內容。
這種形式的import,當import時就執行了fmt包中的init函數,而不可以使用該包的其餘函數。

注意:未使用的導入包,會被編譯器視爲錯誤 (不包括 "import _")。實例以下:

package main

import (
    "fmt"
)

func main() {
}

編譯錯誤:

./main.go:4:2: imported and not used: "fmt"
相關文章
相關標籤/搜索