作家
登录

用Go语言编写一门工具的终极指南

作者: 来源: 2017-10-26 13:08:22 阅读 我要评论

  • 我们不克不及从新 构建新的struct标签 。
  • 为了改进这一点,我编写了一个自定义的Go包,它修复了膳绫擎的所有问题,并供给了一个可以轻松修改struct标签的每个方面的API。

    这个包被称为 structtag ,并且可以大年夜 github.com/fatih/structtag 获取到。这个包许可我们以一种整洁的方法 解析和修改标签 。以下是一个完全的可工作的示例,复制/粘贴并自行测验测验下:

    我们起首来看看 构造体标签的定义 是什么,之后我们会进修所有的部分,以及它们若何组合在一路,大年夜而构建这个对象。

    1. package main 
    2.  
    3. import ( 
    4.     "fmt" 
    5.  
    6.     "github.com/fatih/structtag" 
    7.  
    8. func main() { 
    9.     tag := `json:"foo,omitempty,string" xml:"foo"
    10.  
    11.     // parse the tag 
    12.     tags, err := structtag.Parse(string(tag)) 
    13.     if err != nil { 
    14.         panic(err) 
    15.     } 
    16.  
    17.     // iterate over all tags 
    18.     for _, t := range tags.Tags() { 
    19.         fmt.Printf("tag: %+v\n", t) 
    20.     } 
    21.  
    22.     // get a single tag 
    23.     jsonTag, err := tags.Get("json"
    24.     if err != nil { 
    25.         panic(err) 
    26.     } 
    27.  
    28.     // change existing tag 
    29.     jsonTag.Name = "foo_bar" 
    30.     jsonTag.Options = nil 
    31.     tags.Set(jsonTag) 
    32.  
    33.     // add new tag 
    34.     tags.Set(&structtag.Tag{ 
    35.         Key:     "hcl"
    36.         Name:    "foo"
    37.         Options: []string{"squash"}, 
    38.     }) 
    39.  
    40.     // print the tags 
    41.     fmt.Println(tags) // Output: json:"foo_bar" xml:"foo" hcl:"foo,squash" 

    既然我们已经知道若何解析一个struct标签了,以及修改它或创建一个新的,如今是时刻来修改一个有效的Go源文件了。在膳绫擎的示例中,标签已经存在了,然则若何大年夜现有的Go构造中获取标签呢?


      推荐阅读

      微信消息撤回为啥只有2分钟?恍然大悟

    前人有云,“一言既出,驷马难追”,可见对说出口的话,是多么看重。可是,人总有说错话的时刻啊!为懂得决“手滑”的懊末路,微信在5.3.1.16版本中上线了“微信撤回”的>>>详细阅读


    本文标题:用Go语言编写一门工具的终极指南

    地址:http://www.17bianji.com/lsqh/38247.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)