登录
首页 >  Golang >  Go教程

Go 中封装 log.Printf 方法时如何正确传递参数?

时间:2024-11-07 15:31:03 390浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Go 中封装 log.Printf 方法时如何正确传递参数?》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

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+"\n", 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+"\n", arg...)
    }
}

现在,这段代码将按预期输出日志:

我叫jim,今年18

今天关于《Go 中封装 log.Printf 方法时如何正确传递参数?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>