go基础库之环境变量的获取与设置以及如何使用默认值
golang 基礎庫之?go?獲取命令行參數,介紹了環境變量的獲取與設置以及如何使用默認值
環境變量的獲取與設置以及如何使用默認值
Golang 版本
1.12.1
前言
環境變量作為配置選項可以顯著簡化應用的部署,并且這些在云基礎架構中也是很常見的。
通常,本地和自動構建環境的?數據庫?連接配置是不同的。
如果配置由環境變量定義,則無需更改應用的配置文件或者程序代碼。如果環境變量沒有設置,則默認配置也是可以使用的。這樣對于開發人員就容易多了。
實現
創建?get.go?文件,代碼如下:
package mainimport ("log""os" )func main(){conStr := os.Getenv("DB_CONN")log.Printf("連接:%s\n",conStr) }?
運行命令?export DB_CONN=db:/user@example && go run get.go
$ export DB_CONN=db:/user@example && go run get.go 2019/05/18 21:33:39 連接:db:/user@example?
創建?lookup.go?文件,代碼如下:
package mainimport ("fmt""log""os" )func main() {key := "DB_CONN"connStr, ex := os.LookupEnv(key)if !ex {log.Printf("環境變量 %s 沒有設置\n", key)}fmt.Println(connStr) }運行命令?unset DB_CONN && go run lookup.go
$ unset DB_CONN && go run lookup.go 2019/05/18 21:39:33 環境變量 DB_CONN 沒有設置創建?main.go?文件,代碼如下:
package mainimport ("log""os" )func main() {key := "DB_CONN"// 設置環境變量os.Setenv(key, "postgres://as:as@example.com/pg?sslmode=verify-full")val := GetEnvDefault(key, "postgres://as:as@localhost/pg?sslmode=verify-full")log.Println("值是 :" + val)os.Unsetenv(key)val = GetEnvDefault(key, "postgres://as:as@127.0.0.1/pg?sslmode=verify-full")log.Println("默認值是 :" + val)}func GetEnvDefault(key, defVal string) string {val, ex := os.LookupEnv(key)if !ex {return defVal}return val }運行命令?go run main.go
$ go run main.go 2019/05/18 21:42:58 值是 :postgres://as:as@example.com/pg?sslmode=verify-full 2019/05/18 21:42:58 默認值是 :postgres://as:as@127.0.0.1/pg?sslmode=verify-full原理
環境變量的獲取和設置分別可以通過?os?包中?Getenv?和?Setenv?方法實現。方法名稱已經很明確說明了自身的功能。
但?Getenv?方法有個缺點,即使在未設置環境變量的情況下,它也返回一個空的字符串。
os?包中還有一個很有用的方法,?LookupEnv?,該方法返回兩個值,一個是變量的值,另一個則是變量在環境中是否設置的布爾值。而?LookupEnv?方法則可以克服上面?Getenv?的缺點。
當我們要判斷是否設置了環境變量以及實現一個默認環境變量的方法,都應該使用?LookupEnv?。因為如果未設置環境變量,則第二個值會返回?false
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的go基础库之环境变量的获取与设置以及如何使用默认值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真正理解红黑树,真正的
- 下一篇: go语言判断手机号归属地