Go語言包和檔案

2022-03-10 21:52:42 字數 1754 閱讀 6422

go語言工作空間:編譯工具對原始碼目錄有嚴格要求,每個工作空間 (workspace) 必須由bin、pkg、src三個目錄組成。

src ---- 專案原始碼目錄,裡面每乙個子目錄,就是乙個包,包內是go語言的原始碼檔案。

pkg ---- go語言編譯的.a 中間檔案存放目錄,可自動生成。

bin ---- go語言編譯可執行檔案存放目錄,可自動生成。

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

如同其它一些程式語言中的類庫或命名空間的概念,每個go檔案都屬於且僅屬於乙個包。乙個包可以由許多以.go為副檔名的原始檔組成,因此檔名和包名一般來說都是不相同的。

包宣告 "package + 包名" ,必須在原始檔中非注釋的第一行指明這個檔案屬於哪個包。

如:package main。package main表示乙個可獨立執行的程式,每個go應用程式都包含乙個名為 main 的包。

同乙個包(package)下面,可以有非常多的不同檔案,只要每個檔案的頭部都有相同name就可以,如 "package oldboy" 。資料夾名字可以和這個package名稱不一致。

在執行go get 命令之前,確保你的電腦配置了環境變數gopath,並且安裝git。

在go語言中根據首字母的大小寫來確定可以訪問的許可權。如果首字母大寫,則可以被其他的包訪問;如果首字母小寫,則只能在本包中使用。該規則適用於全域性變數、全域性常量、型別、結構字段、函式、方法等。

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

在匯入包之後,你只能訪問包所匯出的名字,任何未匯出的名字是不能被包外的**訪問的。

使用包成員前,必須先用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"

Go 語言包的概念

golang 包的理解 在 golang 中,使用包是一件常見的事,包的本質實際上就是建立不同的資料夾,來存放程式檔案。個人理解大概相當於 php 的命名空間的概念。golang 的每乙個檔案都屬於乙個包,也就是說go是以包的形式來管理檔案和專案目錄結構的。golang 包的三大作用 區分相同名字的...

go語言包的介紹

包檔案所在的位置 包檔案就是乙個go原始碼檔案 如何指定包名 package name name是目錄名稱 不能是main 在同乙個目錄中所有的go檔案的包名必須要相同 否則會異常 包檔案所在的目錄如何命名 如果包是對外發布的 最好用網域名稱來命名頂層的包目錄 以保證全球唯一 import 裡面匯入...

日常 Go語言聖經 包和檔案 匯入包習題

1.每個包都有乙個全域性唯一的匯入路徑 2.按照慣例,乙個包的名字和包的匯入路徑的最後乙個字段相同 練習 2.2 寫乙個通用的單位轉換程式,用類似cf程式的方式從命令列讀取引數,如果預設的話則是從標準輸入讀取引數,然後做類似celsius和fahrenheit的單位轉換,長度單位可以對應英呎和公尺,...