当前位置: 首页 > news >正文

专业品牌网站建设价格品牌网站建设设计公司

专业品牌网站建设价格,品牌网站建设设计公司,怎么做一张图片的网站,律师网站建设推荐golang使用 viper 无需设置 mapstructure tag 根据配置文件后缀 自动返序列化到结构 解决结构有下划线的字段解析不成功问题 viper 正常加载配置文件 golang viper 其中可以用来 查找、加载和反序列化JSON、TOML、YAML、HCL、INI、envfile和格式的配置文件 配置文件 test_to…golang使用 viper 无需设置 mapstructure tag 根据配置文件后缀 自动返序列化到结构 解决结构有下划线的字段解析不成功问题 viper 正常加载配置文件 golang viper 其中可以用来 查找、加载和反序列化JSON、TOML、YAML、HCL、INI、envfile和格式的配置文件 配置文件 test_toml.toml http_addr :8082 grpc_addr :8083 jaeger_url http://localhost:14268/api/traces tracing truegolang代码 type ConfigTest struct {HttpAddr string json:http_addr toml:http_addr yaml:http_addrGrpcAddr string json:grpc_addr toml:grpc_addr yaml:grpc_addrJaegerUrl string json:jaeger_url toml:jaeger_url yaml:jaeger_url mapstructure:jaeger_urlTracing bool toml:tracing json:tracing yaml:tracing // opentelemetry tracing }// jaeger 加载配置文件 func TestSourceFile_Unmarshal(t *testing.T) {filePath : ./test_toml.tomlviper.SetConfigFile(filePath)if err : viper.ReadInConfig(); err ! nil {t.Error(err)}c : ConfigTest{}if err : viper.Unmarshal(c); err ! nil {t.Error(err)}logger.Infow(Unmarshal file sucess, v, c) } 打印返序列化的配置结构 {level:info,ts:2023-08-27T21:35:27.0410800,caller:config/source_file_test.go:31,msg:Unmarshal file sucess,v:{http_addr:,grpc_addr:,jaeger_url:http://localhost:14268/api/traces,tracing:true}}可以看到带下划线的字段,不加 mapstructure 标签,是不会反序列化 不加 mapstructure tag实现自动反序列化 查看viper Unmarshal 代码 func (v *Viper) Unmarshal(rawVal interface{}, opts ...DecoderConfigOption) error {return decode(v.AllSettings(), defaultDecoderConfig(rawVal, opts...)) } func decode(input interface{}, config *mapstructure.DecoderConfig) error {decoder, err : mapstructure.NewDecoder(config)if err ! nil {return err}return decoder.Decode(input) } func NewDecoder(config *DecoderConfig) (*Decoder, error) {if config.TagName {config.TagName mapstructure}// ... } 从代码看出 Viper使用的是 github.com/mitchellh/mapstructure来解析值mapstructure 用于将通用的map[string]interface{}解码到对应的 Go 结构体中默认情况下mapstructure 使用结构体中字段的名称做这个映射,不区分大小写,比如 Name 字段可以映射到 name、NAME、NaMe 等等如果没有指定 tagName 则默认为 mapstructure,这也是为什么带下划线的字段不加 mapstructure 标签无法解析的原因viper 中Unmarshal的第二个参数是可以指定 DecoderConfigOption 的,从而可以指定 tagName viper根据文类型件自动解码到结构 读取文件后缀比如 toml 根据后缀设置 tagName 调用 viper.Unmarshal解析 func TestSourceFile_Unmarshal1(t *testing.T) {filePath : ./test_toml.tomlc : ConfigTest{}if err : viperUnmarshal(c, filePath); err ! nil {t.Error(err)}logger.Infow(Unmarshal file sucess, v, c) }func viperUnmarshal(v interface{}, configPath string) error {var tagName stringext : filepath.Ext(configPath)if len(ext) 1 {tagName ext[1:]}// set decode tag_name, default is mapstructuredecoderConfigOption : func(c *mapstructure.DecoderConfig) {c.TagName tagName}cViper : viper.New()cViper.SetConfigFile(configPath)if err : cViper.ReadInConfig(); err ! nil {return err}return cViper.Unmarshal(v, decoderConfigOption) }
http://wiki.neutronadmin.com/news/109273/

相关文章:

  • 网站备案与服务器东莞市有多少个镇
  • c# asp.net网站开发书建设厅官网查询
  • 南京建站软件网站建设学什么软件
  • 长治做百度网站一年多少钱仿win8 网站
  • 大望路网站建设公司哪些网站是用asp.net做的
  • 站群cms源码网站域名查询注册
  • 青岛网站设计模板建材在哪些网站做
  • 淄博网站网站建设东莞最大的网络公司
  • 龙华住房和建设局网站怎么无法登陆现货做网站
  • 普陀区网站建设公司钢筋网片规格型号
  • 网站天天做收录有效果吗wordpress 缓存用什么
  • 网站建设公司资质设计wordpress页面模板下载地址
  • 徐州网站开发如何在线教育
  • jsp网站开发如何把自横批排动漫设计属于什么大类
  • 最好的网站建设免费的server 2008 网站部署
  • 给你一个网站如何做推广广州市网络预约出租汽车综合业务管理平台
  • 教育网站设计岚皋网站建设
  • 如何选择模板网站建设网站用什么做关键词
  • 东城免费做网站做网站用什么虚拟服务器
  • 12380网站建设网站开发的岗位及职责
  • 厦门网站建设费用wordpress通知公告
  • 盐城市网站建设公司竞拍网站建设
  • 医疗行业网站备案制作网页的思路
  • 广州seo技术培训搜索引擎seo关键词优化效果
  • 岳阳网站建设哪里有广州市建设和水务局网站
  • 网站整合营销建设哈密建设集团有限责任公司网站
  • 做网站智能工具交换友情链接的注意事项
  • 品牌网站建设小i蝌蚪网站建设上海
  • 怎么创建图片网站做网站里面的内容
  • 成都哪里可以做网站做网站的开发软件是什么