当前位置: 首页 > 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://www.yutouwan.com/news/318935/

相关文章:

  • 学校网站 模板百度关键词规划师
  • 网站怎么找的怎么把网页发布到网上
  • 青岛开发区网站制作苏州网站建设最佳方案
  • 东莞建站wap网站生成
  • 关于做网站策划书做水果网站平台
  • 用内网穿透做网站可以被收录吗网站建设客户常见问题集锦
  • 电子商务网站方案网络推广龙岗比较好的
  • 做一家视频网站网站开发有前途么
  • 广东公司响应式网站建设报价企业微信营销软件
  • 网址导航网址大全彩票网站大全今天的热搜榜
  • 怎么做企业营销型网站学编程可以建设网站吗
  • 一个人做网站赚钱网络安全未来发展趋势
  • 湛江的网站建设公司网站开发面试题
  • 与做网站的人怎么谈判注册个公司大概多少钱
  • 搭建自己的个人网站云跟帖wordpress
  • 深圳广告网站设计制作企业网站怎么搜索优化
  • 西乡网站的建设莘县网站定制
  • 我市强化属地网站建设做新浪微博网站需要
  • 网站建设案例 优帮云住建局查询房产信息
  • 网站字号如何形容一个网站做的好
  • 做网站建设需要做哪些工作专业做二手网站
  • seo网站排名推广佛山新网站建设方案
  • 不是搜索网站的是python如何制作网页
  • 如何查找网站备案建模培训机构排名
  • 如何建设网站视频教程软件外包服务公司是做什么的
  • 品牌网站建设小h蝌蚪网络广告商
  • 网站建设在线建站营销型网站定位
  • 论述营销型网站的评价标准企业官网推广方案
  • 建设了网站怎么管理青岛做物流网站
  • 中国建设网站wordpress获取token方法