Categories: GoFrame 教程

GoFrame 配置管理-常用方法

GetWithEnv

说明:

  • GetWithEnv方法会先从默认的配置文件中获取配置数据,获取为空的时候,将会去当前的环境变量中进行获取。需要注意的是名称命名转换规则:
  • 环境变量会将名称转换为大写,名称中的.字符转换为_字符。
  • 参数名称中会将名称转换为小写,名称中的_字符转换为.字符。

格式:

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
", 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​方法类似,也是先从默认的配置对象中获取配置数据,但是获取为空的时候,是去命令行中获取配置信息。

格式:

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
", 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​方法类似,该方法只会返回配置内容,一旦内部发生任何错误,将会有​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
", 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​方法类似,该方法只会返回配置内容,一旦内部发生任何错误,将会有​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
", 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​方法从配置对象中获取配置数据,组装成​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​方法从配置对象中获取配置数据,组装成​map[string]interface{}​类型。当该方法内部产生错误时不会返回错误,而是直接​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​方法从配置对象中获取配置数据,返回​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​类似,也是配置对象中获取配置数据,组装成​gvar​结构,但是返回参数只有一个:​*gvar.Var

注意:

当配置文件不存在或者是其他​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​方法是获取当前运行的​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​方法是设置当前运行的​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}
}

唐伯虎点蚊香

前端小白,想各位学习!

Share
Published by
唐伯虎点蚊香

Recent Posts

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

1 月 ago