ffjson 为Go中的结构生成 static MarshalJSON 和 UnmarshalJSON 函数。 生成的函数减少了对运行时反射进行序列化的依赖,通常是 2到 3倍。 在 ffjson 不理解类型的情况下,它返回 encoding/json,意味着它是一个安全的替代方法。 通过使用 ffjson,你的JSON序列化就变得更快,无需额外的代码更改。
Cobra是一个库,其提供简单的接口来创建强大现代的CLI接口,类似于git或者go工具。同时,它也是一个应用,用来生成个人应用框架,从而开发以Cobra为基础的应用。Docker源码中使用了Cobra。
https://github.com/spf13/cobra https://github.com/xiazemin/cobra Cobra提供的功能 简易的子命令行模式,如 app server, app fetch等等 完全兼容posix命令行模式 嵌套子命令subcommand 支持全局,局部,串联flags 使用Cobra很容易的生成应用程序和命令,使用cobra create appname和cobra add cmdname 如果命令输入错误,将提供智能建议,如 app srver,将提示srver没有,是否是app server 自动生成commands和flags的帮助信息 自动生成详细的help信息,如app help 自动识别-h,–help帮助flag 自动生成应用程序在bash下命令自动完成功能 自动生成应用程序的man手册 命令行别名 自定义help和usage信息 可选的紧密集成的viper apps cobra init github.com/xiazemin/cobra/myapp Error: required flag(s) “pkg-name” not set Usage: cobra init [name] [flags]
用 go get 获取依赖其实是有潜在危险的,因为我们不确定最新版依赖是否会破坏掉我们项目对依赖包的使用方式,即当前项目可能会出现不兼容最新依赖包的问题。之后官方出了一个 vendor 机制,将项目依赖的包都放在该目录中,但这也并没有很好地管理依赖的版本。之后官方出了一个准官方版本管理工具 go dep,这也算是 go modules 的前身了吧。随着 Go1.11 的发布,Golang 给我们带来了 module 全新特性,这是 Golang 新的一套依赖管理系统。现在 Go1.12 已经发布了,go modules 进一步稳定,但官方还是没有将其设为默认机制 创建 module 创建项目 在默认情况下,$GOPATH 默认情况下是不支持 go mudules 的,我们需要在项目目录下手动执行以下命令: