一、Golang 中包的介紹和定義
包(package)是多個 Go 原始碼的集合,是一種高階的程式碼複用方案,Go 語言為我們提供了
很多內建包,如 fmt、strconv、strings、sort、errors、time、encoding/json、os、io 等。
Golang 中的包可以分為三種:1、系統內建包 2、自定義包 3、第三方包
系統內建包: Golang 語言給我們提供的內建包,引入後可以直接使用,如 fmt、
strconv、strings、sort、errors、time、encoding/json、os、io 等。
自定義包:開發者自己寫的包
第三方包:屬於自定義包的一種,需要下載安裝到本地後才可以使用,如前面給大家介紹的
“github.com/shopspring/decimal”包解決 float 精度丟失問題。
二、Golang 包管理工具 go mod
在 Golang1.11 版本之前如果我們要自定義包的話必須把專案放在 GOPATH 目錄。Go1.11 版
本之後無需手動配置環境變數,使用 go mod 管理專案,也不需要非得把專案放到 GOPATH
指定目錄下,你可以在你磁碟的任何位置新建一個專案 , Go1.13 以後可以徹底不要 GOPATH
了
1、go mod init 初始化專案
實際專案開發中我們首先要在我們專案目錄中用 go mod 命令生成一個 go.mod 檔案管理我
們專案的依賴。
比如我們的 golang 專案檔案要放在了 itying 這個資料夾,這個時候我們需要在 itying 資料夾
裡面使用 go mod 命令生成一個 go.mod檔案
三、Golang 中 init()初始化函式
init()函式介紹
在 Go 語言程式執行時匯入包語句會自動觸發包內部 init()函式的呼叫。需要注意的是:init()
函式沒有引數也沒有返回值。 init()函式在程式執行時自動被呼叫執行,不能在程式碼中主動呼叫它。
包初始化執行的順序如下圖所示:
init()函式執行順
Go 語言包會從 main 包開始檢查其匯入的所有包,每個包中又可能匯入了其他的包。Go 編
譯器由此構建出一個樹狀的包引用關係,再根據引用順序決定編譯順序,依次編譯這些包的程式碼。
在執行時,被最後匯入的包會最先初始化並呼叫其 init()函式, 如下圖示:
本作品採用《CC 協議》,轉載必須註明作者和本文連結