Go 中封装 log.Printf 方法时如何正确传递参数?
go 中封装 log.printf 方法
在 golang 中,封装日志相关的方法可以实现对日志输出的定制控制。然而,在封装 log.printf 方法时,可能会遇到一些问题。
例如,以下代码旨在根据给定条件控制日志输出:
package main import "log" func main() { debugf("我叫%s,今年%d", "jim", 18) } func debugf(str string, arg ...interface{}) { if true { log.printf(str+" ", arg) } }
但是,这段代码无法按预期打印日志。实际输出如下:
2021/12/17 16:35:16 我叫[jim %!s(int=18)],今年%!d(missing)
这与我们期望的输出不同。问题在于 arg 在 log.printf 中的传递方式不正确。
要解决此问题,需要使用 ... 操作符将 arg 切片展开为函数调用中的单个参数。修改后的代码如下:
package main import "log" func main() { debugf("我叫%s,今年%d", "jim", 18) } func debugf(str string, arg ...interface{}) { if true { log.printf(str+" ", arg...) } }
现在,这段代码将按预期输出日志:
我叫jim,今年18
以上就是Go 中封装 log.Printf 方法时如何正确传递参数?的详细内容,更多请关注其它相关文章!