博客
关于我
go-options-一个命令行标识、配置文件值解析库
阅读量:581 次
发布时间:2019-03-11

本文共 1565 字,大约阅读时间需要 5 分钟。

go-options 简介

go-options 是一个用于解析命令行标志、配置文件以及默认结构体值,并用于设置配置值的开源类库。这类库能够将来自命令行标志、配置文件或默认值的配置信息解析到目标结构体的相关成员上。

主要功能

该项目主要设计用于将来自以下不同来源的配置值解析到目标结构体成员上。支持的结构体成员标签包括 "flag"、"cfg" 和 "deprecated"。值得注意的是,值的解析符合以下优先级顺序(从高到低):

  • 命令行标志
  • 懒置命令行标志
  • 配置文件
  • 如果有 Getter 接口.support() 返回的值
  • 结构体默认值
  • 示例说明

    以下是一个典型的使用示例:

    package mainimport (    "flag"    "fmt"    "github.com/mreiferson/go-options"    "time")type Options struct {    MaxSize int64 `flag:"max-size" cfg:"max_size"`    Timeout time.Duration `flag:"timeout" cfg:"timeout"`    Description string `flag:"description" cfg:"description"`}func main() {    flagSet := flag.NewFlagSet("example", flag.ExitOnError)    flagSet.Int64("max-size", 1024768, "maximum size")    flagSet.Duration("timeout", 1*time.Hour, "timeout setting")    flagSet.String("description", "", "description info")    // 通常会在此处解析命令行参数    flagSet.Parse([]string{"-timeout=5s"})    opts := &Options{        MaxSize: 1,        Timeout: time.Second,    }    cfg := map[string]interface{}{        "max-size": 888,        "timeout": "2h",        "description": "description-info",        "description1": "无关内容",    }    fmt.Printf("%#v", opts)  // 输出: &main.Options{    //   MaxSize: 1,    //   Timeout: 1000000000,    //   Description: "",    // }    options.Resolve(opts, flagSet, cfg)    fmt.Println()    fmt.Printf("%#v", opts)  // 输出: &main.Options{    //   MaxSize: 1024768,    //   Timeout: 5000000000,    //   Description: "description-info",    // }

    通过以上代码,可以观察到 go-options 根据预定义的优先级顺序,优先使用命令行标志解析相关配置,然后使用配置文件,最终再使用结构体默认值作为备选方案。这类库设计初衷是帮助开发者高效地管理配置信息,同时尽量减少冗余代码。

    转载地址:http://jwmvz.baihongyu.com/

    你可能感兴趣的文章
    SharePoint 2013 图文开发系列之定义站点模板
    查看>>
    PCB生产流程详解-ChatGPT4o作答
    查看>>
    PCB设计十条黄金法则
    查看>>
    SpringSecurity框架介绍
    查看>>
    PCI Express学习篇:Power Management(二)
    查看>>
    pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)
    查看>>
    pcm转wav的方法及代码示例
    查看>>
    PC史上最悲剧的16次失败
    查看>>
    PC端恶意代码分析Lab1.1-5.1,从零基础到精通,收藏这篇就够了!
    查看>>
    PC端稳定性测试探索
    查看>>
    PC端编辑 但能在PC端模拟移动端预览的富文本编辑器
    查看>>
    PDB文件:每个开发人员都必须知道的
    查看>>
    springMVC学习(二)
    查看>>
    Pdfkit页眉和页脚
    查看>>
    PDF中的Pandoc语法突出显示不起作用
    查看>>
    pdf从结构新建书签_在PDF文件中怎样创建书签
    查看>>
    pdf做成翻页电子书_第一弹:常见BOOX电子书阅读器问题解答,这些技能你都会吗?...
    查看>>
    PDF工具箱-分割提取合并
    查看>>
    PDF文字识/编辑?这个工具真的很强大!
    查看>>
    pdf文档出现乱码如何修改
    查看>>