Go語言基礎之包

2022-09-15 13:48:26 字數 2147 閱讀 9807

包(package)是多個go原始碼的集合,是一種高階的**復用方案,go語言為我們提供了很多內建包,如fmtosio等。

我們還可以根據自己的需要建立自己的包。乙個包可以簡單理解為乙個存放.go檔案的資料夾。 該資料夾下面的所有go檔案都要在**的第一行新增如下**,宣告該檔案歸屬的包。

package 包名
注意事項:

如果想在乙個包中引用另外乙個包裡的識別符號(如變數、常量、型別、函式等)時,該識別符號必須是對外可見的(public)。在go語言中只需要將識別符號的首字母大寫就可以讓識別符號對外可見了

舉個例子, 我們定義乙個包名為pkg2的包,**如下:

package pkg2

import "fmt"

// 包變數可見性

var a = 100 // 首字母小寫,外部包不可見,只能在當前包內使用

// 首字母大寫外部包可見,可在其他包中使用

const mode = 1

type person struct

// 首字母大寫,外部包可見,可在其他包中使用

func add(x, y int) int

func age()

結構體中的欄位名和介面中的方法名如果首字母都是大寫,外部包可以訪問這些欄位和方法。例如:

type student struct 

type payer inte***ce

要在**中引用其他包的內容,需要使用import關鍵字匯入使用的包。具體語法如下:

import "包的路徑"
注意事項:

單行匯入的格式如下:

import "包1"

import "包2"

多行匯入的格式如下:

import (

"包1"

"包2"

)

在匯入包名的時候,我們還可以為匯入的包設定別名。具體語法格式如下:

import 別名 "包的路徑"
單行匯入方式定義別名:

多行匯入方式定義別名:

如果只希望匯入包,而不使用包內部的資料時,可以使用匿名匯入包。具體的格式如下:

import _ "包的路徑"
匿名匯入的包與其他方式匯入的包一樣都會被編譯到可執行檔案中。

在go語言程式執行時匯入包語句會自動觸發包內部init()函式的呼叫。需要注意的是:init()函式沒有引數也沒有返回值。init()函式在程式執行時自動被呼叫執行,不能在**中主動呼叫它。

包初始化執行的順序如下圖所示: 

go語言包會從main包開始檢查其匯入的所有包,每個包中又可能匯入了其他的包。go編譯器由此構建出乙個樹狀的包引用關係,再根據引用順序決定編譯順序,依次編譯這些包的**。

在執行時,被最後匯入的包會最先初始化並呼叫其init()函式, 如下圖示: 

Go語言基礎之time包

時間和日期是我們程式設計中經常會用到的,本文主要介紹了go語言內建的time包的基本用法。go語言中使用import關鍵字匯入包,包的名字使用雙引號 包裹起來。import time import fmt 匯入多個包時可以使用圓括號,包名的順序不影響匯入效果,例如 import fmt time 需...

Go語言基礎之time包

時間和日期是我們程式設計中經常會用到的,本文主要介紹了go語言內建的time包的基本用法。時間型別 time包提供了時間的顯示和測量用的函式。日曆的計算採用的是公曆。time.time型別表示時間。我們可以通過time.now 函式獲取當前的時間物件,然後獲取時間物件的年月日時分秒等資訊。示例 如下...

go語言基礎 時間time包

time包下有很多跟時間有關係的方法,以前我們介紹的隨機數就是利用了time包下的乙個方法,接下來我再來介紹一些常用方法 日期和時間 now time,獲取當前的日期 date time,獲取指定的日期 time string,string time 格式化列印當前時間,要按照go語言特定的格式輸入...