ℹ️ 本文基于Go 1.17
stringer
命令旨在自动创建满足fmt.Stringer的方法。它为指定类型生成String()
并将其描述为字符串。常可用于定义错误码时同时生成错误信息等场景。
案例:
这是我们常用的生成常量值的方法
如果量很多,那么手写是挺麻烦的事情
让我们使用stringer -type=Hash
命令生成String()
方法:
//stringer并不是 Go 自带的工具,需要手动安装。可以执行下面的命令安装:go get golang.org/x/tools/cmd/stringer
利用 stringer 生成String方法 如下
此时会生成一个带_string后缀的文件
效率
stringer
生成一个字符串,该字符串包含作为字符串的值的列表,以及一个包含每个字符串的索引的数组。在我们的示例中,读取MD5
将包括从索引3到6读取字符串:
但是它有多快和高效?让我们与其他两种解决方案进行比较:
-
使用硬编码值生成
String()
函数:
基准测试:
-
String()
函数生成一个map:
基准测试:
自检
stringer
将每行的常量名称与该值一起写入。在此示例中,MD5的值为2。更新常量名称或其值将生成错误:
只有String()
函数以二进制形式导出。该检查没有性能或二进制大小的开销。
参考博客: