- Created by 郭强, last modified by 海亮 on Nov 15, 2022
以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档:https://pkg.go.dev/github.com/gogf/gf/v2/os/gcfg
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\n", v) if err = genv.Set(`ENV_TEST`, "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\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
方法类似,该方法只会返回配置内容,一旦内部发生任何错误,将会有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
方法类似,该方法只会返回配置内容,一旦内部发生任何错误,将会有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(`ENV_TEST`, "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} }
Content Menu
- No labels
5 Comments
卡卡
比1.16版的更难用了,过于通用化的类型未必是好事
郭强
只是多了个
ctx
参数而已。荆义顺
这里确实没有1.16的简练了,初始化一个gcfg对象还要关心Adapter, 大部分情况下Adapter是用不上的。
初始化一个gcfg要多写很多啰嗦的代码。
郭强
默认是文件实现,不需要手动初始化,和
1.16
版本一致。只有在需要使用其他Adapter
的时候才需要关系Adapter
注入。程建
加一些 GetString GetInt GetFloat 之类的方法会不会更方便一些