新聞中心
GetWithEnv
說明:

作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)公司提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運(yùn)營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價(jià)值。
- GetWithEnv方法會先從默認(rèn)的配置文件中獲取配置數(shù)據(jù),獲取為空的時(shí)候,將會去當(dāng)前的環(huán)境變量中進(jìn)行獲取。需要注意的是名稱命名轉(zhuǎn)換規(guī)則:
- 環(huán)境變量會將名稱轉(zhuǎn)換為大寫,名稱中的.字符轉(zhuǎn)換為_字符。
- 參數(shù)名稱中會將名稱轉(zhuǎn)換為小寫,名稱中的_字符轉(zhuǎn)換為.字符。
格式:
GetWithEnv(ctx context.Context, pattern string, def ...interface{}) (*gvar.Var, error)示例:
func ExampleConfig_GetWithEnv() {
var (
key = `ENV_TEST`
ctx = gctx.New()
)
v, err := g.Cfg().GetWithEnv(ctx, key)
if err != nil {
panic(err)
}
fmt.Printf("env:%s\n", v)
if err = genv.Set(key, "gf"); err != nil {
panic(err)
}
v, err = g.Cfg().GetWithEnv(ctx, key)
if err != nil {
panic(err)
}
fmt.Printf("env:%s", v)
// Output:
// env:
// env:gf
}
GetWithCmd
說明:
?GetWithCmd?方法與?GetWithEnv?方法類似,也是先從默認(rèn)的配置對象中獲取配置數(shù)據(jù),但是獲取為空的時(shí)候,是去命令行中獲取配置信息。
格式:
GetWithCmd(ctx context.Context, pattern string, def ...interface{}) (*gvar.Var, error)示例:
func ExampleConfig_GetWithCmd() {
var (
key = `cmd.test`
ctx = gctx.New()
)
v, err := g.Cfg().GetWithCmd(ctx, key)
if err != nil {
panic(err)
}
fmt.Printf("cmd:%s\n", v)
// Re-Initialize custom command arguments.
os.Args = append(os.Args, fmt.Sprintf(`--%s=yes`, key))
gcmd.Init(os.Args...)
// Retrieve the configuration and command option again.
v, err = g.Cfg().GetWithCmd(ctx, key)
if err != nil {
panic(err)
}
fmt.Printf("cmd:%s", v)
// Output:
// cmd:
// cmd:yes
}
MustGetWithCmd
說明:
?MustGetWithCmd?方法與?GetWithCmd?方法類似,該方法只會返回配置內(nèi)容,一旦內(nèi)部發(fā)生任何錯(cuò)誤,將會有?panic?。
格式:
MustGetWithCmd(ctx context.Context, pattern string, def ...interface{}) *gvar.Var示例:
func ExampleConfig_MustGetWithCmd() {
var (
key = `cmd.test`
ctx = gctx.New()
)
v := g.Cfg().MustGetWithCmd(ctx, key)
fmt.Printf("cmd:%s\n", v)
// Re-Initialize custom command arguments.
os.Args = append(os.Args, fmt.Sprintf(`--%s=yes`, key))
gcmd.Init(os.Args...)
// Retrieve the configuration and command option again.
v = g.Cfg().MustGetWithCmd(ctx, key)
fmt.Printf("cmd:%s", v)
// Output:
// cmd:
// cmd:yes
}
MustGetWithEnv
說明:
?MustGetWithEnv?方法與?GetWithEnv?方法類似,該方法只會返回配置內(nèi)容,一旦內(nèi)部發(fā)生任何錯(cuò)誤,將會有?panic?。
格式:
MustGetWithEnv(ctx context.Context, pattern string, def ...interface{}) *gvar.Var示例:
func ExampleConfig_MustGetWithEnv() {
var (
key = `ENV_TEST`
ctx = gctx.New()
)
v := g.Cfg().MustGetWithEnv(ctx, key)
fmt.Printf("env:%s\n", v)
if err := genv.Set(key, "gf"); err != nil {
panic(err)
}
v = g.Cfg().MustGetWithEnv(ctx, key)
fmt.Printf("env:%s", v)
// Output:
// env:
// env:gf
}
Data
說明:
?Data?方法從配置對象中獲取配置數(shù)據(jù),組裝成?map[string]interface{}?類型。
格式:
Data(ctx context.Context) (data map[string]interface{}, err error)示例:
func ExampleConfig_Data() {
ctx = gctx.New()
content := `
v1 = 1
v2 = "true"
v3 = "off"
v4 = "1.23"
array = [1,2,3]
[redis]
disk = "127.0.0.1:6379,0"
cache = "127.0.0.1:6379,1"
`
c, err := gcfg.New()
if err != nil{
panic(err)
}
c.GetAdapter().(*gcfg.AdapterFile).SetContent(content)
data, err := c.Data(ctx)
if err != nil{
panic(err)
}
fmt.Println(data)
// Output:
// map[array:[1 2 3] redis:map[cache:127.0.0.1:6379,1 disk:127.0.0.1:6379,0] v1:1 v2:true v3:off v4:1.23]
}
MustData
說明:
?MustData?方法從配置對象中獲取配置數(shù)據(jù),組裝成?map[string]interface{}?類型。當(dāng)該方法內(nèi)部產(chǎn)生錯(cuò)誤時(shí)不會返回錯(cuò)誤,而是直接?panic?。
格式:
MustData(ctx context.Context) map[string]interface{}示例:
func ExampleConfig_MustData() {
ctx = gctx.New()
content := `
v1 = 1
v2 = "true"
v3 = "off"
v4 = "1.23"
array = [1,2,3]
[redis]
disk = "127.0.0.1:6379,0"
cache = "127.0.0.1:6379,1"
`
c, err := gcfg.New()
if err != nil{
panic(err)
}
c.GetAdapter().(*gcfg.AdapterFile).SetContent(content)
data := c.MustData(ctx)
fmt.Println(data)
// Output:
// map[array:[1 2 3] redis:map[cache:127.0.0.1:6379,1 disk:127.0.0.1:6379,0] v1:1 v2:true v3:off v4:1.23]
}
Get
說明:
?Get?方法從配置對象中獲取配置數(shù)據(jù),返回?gvar?泛型對象。
格式:
Get(ctx context.Context, pattern string, def ...interface{}) (*gvar.Var, error)示例:
func ExampleConfig_Get() {
ctx = gctx.New()
content := `
v1 = 1
v2 = "true"
v3 = "off"
v4 = "1.23"
array = [1,2,3]
[redis]
disk = "127.0.0.1:6379,0"
cache = "127.0.0.1:6379,1"
`
c, err := gcfg.New()
if err != nil{
panic(err)
}
c.GetAdapter().(*gcfg.AdapterFile).SetContent(content)
data,err := c.Get(ctx,"redis")
if err != nil {
panic(err)
}
fmt.Println(data)
// Output:
// {"cache":"127.0.0.1:6379,1","disk":"127.0.0.1:6379,0"}
}
MustGet
說明:
?MustGet?方法與?Get?類似,也是配置對象中獲取配置數(shù)據(jù),組裝成?gvar?結(jié)構(gòu),但是返回參數(shù)只有一個(gè):?*gvar.Var ?
注意:
當(dāng)配置文件不存在或者是其他?error?的情況下,會直接?panic?,需要做好異常捕獲措施。
格式:
MustGet(ctx context.Context, pattern string, def ...interface{}) *gvar.Var示例:
func ExampleConfig_MustGet() {
ctx = gctx.New()
content := `
v1 = 1
v2 = "true"
v3 = "off"
v4 = "1.23"
array = [1,2,3]
[redis]
disk = "127.0.0.1:6379,0"
cache = "127.0.0.1:6379,1"
`
c, err := gcfg.New()
if err != nil{
panic(err)
}
c.GetAdapter().(*gcfg.AdapterFile).SetContent(content)
data := c.MustGet(ctx,"redis")
fmt.Println(data)
// Output:
// {"cache":"127.0.0.1:6379,1","disk":"127.0.0.1:6379,0"}
}
GetAdapter
說明:
?GetAdapter?方法是獲取當(dāng)前運(yùn)行的?gcfg?適配器信息。
格式:
GetAdapter() Adapter示例:
func ExampleConfig_GetAdapter() {
c, err := gcfg.New()
if err != nil{
panic(err)
}
adapter := c.GetAdapter()
fmt.Println(adapter)
// Output:
// &{config.toml 0xc00014d720 0xc000371880 false}
}
SetAdapter
說明:
?SetAdapter?方法是設(shè)置當(dāng)前運(yùn)行的?gcfg?適配器信息。
格式:
SetAdapter(adapter Adapter)示例:
func ExampleConfig_SetAdapter() {
c, err := gcfg.New()
if err != nil{
panic(err)
}
adapter := c.GetAdapter()
c.SetAdapter(adapter)
fmt.Println(adapter)
// Output:
// &{config.toml 0xc00014d720 0xc000371880 false}
} 本文題目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame配置管理-常用方法
當(dāng)前鏈接:http://m.fisionsoft.com.cn/article/dpccdgo.html


咨詢
建站咨詢
