Go语言日志打印的灵活封装与参数处理
在Go语言开发中,经常需要自定义日志处理,例如调整日志级别或格式。本文将解决一个常见的Go语言日志封装问题:如何正确封装log.Printf函数并使其灵活处理格式化参数。
许多开发者尝试自定义日志输出,例如以下代码:
package mainimport "log"func main() { debugf("我叫%s,今年%d", "jim", 18)}func debugf(str string, arg ...interface{}) { if true { log.Printf(str+"\n", arg) // 错误的参数传递 }}
登录后复制
运行结果并非预期,因为log.Printf期望的是可变参数…interface{},而代码直接传递了arg切片,而非log.Printf所需的可变参数列表。
立即学习“go语言免费学习笔记(深入)”;
正确的做法是使用…展开运算符将arg切片展开为单独的参数传递给log.Printf:
log.Printf(str+"\n", arg...)
登录后复制
修正后的debugf函数如下:
func Debugf(str string, arg ...interface{}) { if true { log.Printf(str+"\n", arg...) // 正确的参数传递 }}
登录后复制
这样,log.Printf就能正确解析参数,输出预期结果:“我叫jim,今年18”。 arg…将arg切片中的每个元素作为独立参数传递给log.Printf,解决了原始代码中的参数传递错误,实现了对log.Printf的正确封装,并保证了参数的灵活传递。
以上就是Go语言日志打印如何正确封装log.Printf并灵活传递参数?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3172199.html