溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何分析Go中的godotenv

發(fā)布時間:2022-01-17 18:01:11 來源:億速云 閱讀:157 作者:柒染 欄目:數(shù)據(jù)庫

這篇文章跟大家分析一下“如何分析Go中的godotenv”。內(nèi)容詳細(xì)易懂,對“如何分析Go中的godotenv”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭O旅娓【幰黄鹕钊雽W(xué)習(xí)“如何分析Go中的godotenv”的知識吧。

Go 中的godotenv
簡介
twelve-factor應(yīng)用提倡將配置存儲在環(huán)境變量中。任何從開發(fā)環(huán)境切換到生產(chǎn)環(huán)境時需要修改的東西都從代碼抽取到環(huán)境變量里。 但是在實際開發(fā)中,如果同一臺機器運行多個項目,設(shè)置環(huán)境變量容易沖突,不實用。godotenv庫從.env文件中讀取配置, 然后存儲到程序的環(huán)境變量中。在代碼中可以使用讀取非常方便。godotenv源于一個 Ruby 的開源項目dotenv。

快速使用
第三方庫需要先安裝:

$ go get github.com/joho/godotenv


后使用:

package mainimport (  "fmt"  "log"  "os"  "github.com/joho/godotenv")func main() {  err := godotenv.Load()  if err != nil {    log.Fatal(err)  }  fmt.Println("name: ", os.Getenv("name"))  fmt.Println("age: ", os.Getenv("age"))}


然后在可執(zhí)行程序相同目錄下,添加一個.env文件:

name = dj
age = 18

運行程序,輸出:

name: dj
age: 18

可見,使用非常方便。默認(rèn)情況下,godotenv讀取項目根目錄下的.env文件,文件中使用key = value的格式,每行一個鍵值對。 調(diào)用godotenv.Load()即可加載,可直接調(diào)用os.Getenv("key")讀取。os.Getenv是用來讀取環(huán)境變量的:

package mainimport (  "fmt"  "os")func main() {  fmt.Println(os.Getenv("GOPATH"))}


高級特性
自動加載
如果你有程序員的優(yōu)良傳統(tǒng)——懶,你可能連Load方法都不想自己調(diào)用。沒關(guān)系,godotenv給你懶的權(quán)力!

導(dǎo)入github.com/joho/godotenv/autoload,配置會自動讀?。?/p>

package mainimport (  "fmt"  "os"  _ "github.com/joho/godotenv/autoload")func main() {  fmt.Println("name: ", os.Getenv("name"))  fmt.Println("age: ", os.Getenv("age"))}


注意,由于代碼中沒有顯式用到godotenv庫,需要使用空導(dǎo)入,即導(dǎo)入時包名前添加一個_。

看autoload包的源碼,其實就是庫幫你調(diào)用了Load方法:

// src/github.com/joho/godotenv/autoload/autoload.gopackage autoload

/*You can just read the .env file on import just by doingimport _ "github.com/joho/godotenv/autoload"And bob's your mother's brother*/import "github.com/joho/godotenv"func init() {  godotenv.Load()}

關(guān)于如何分析Go中的godotenv就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學(xué)習(xí)更多知識,請大家多多留意小編的更新。謝謝大家關(guān)注一下億速云網(wǎng)站!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI