gpt4 book ai didi

Golang : fmt, 可变参数和 %!(EXTRA type=value) 错误

转载 作者:IT王子 更新时间:2023-10-29 01:23:13 27 4
gpt4 key购买 nike

我正在围绕标准日志包实现一个包装器,以制作具有各种日志级别的记录器。

我有以下界面:

type Logger interface {
Trace(fmt string, args ...interface{})
Debug(fmt string, args ...interface{})
Info(fmt string, args ...interface{})
Warn(fmt string, args ...interface{})
Error(fmt string, args ...interface{})
Fatal(fmt string, args ...interface{})
Panic(fmt string, args ...interface{})
}

在实现中我有这样的东西(不是确切的代码)

func Info(format string, args ...interface{}){
msg := fmt.Sprintf(format, args...)
log.Println(msg)
}

现在,假设我这样调用我的库:

logger.Info("Hello %s", "World")

我得到打印输出:“Hello %!(EXTRA string=WORLD)”,而不是预期的“Hello World”。如果我这样做,会有类似的输出

msg := fmt.Sprintf(format, args)

这将返回“Hello World%!EXTRA []interface{}=[]”。

最佳答案

我无法重现此行为。您确定这不是您忘记在此处显示的简单错误吗?

https://play.golang.org/p/-jtmll17Xj

package main

import "fmt"

func Info(format string, args ...interface{}){
msg := fmt.Sprintf(format, args...)
fmt.Print(msg)
}

func main() {
Info("Hello %s", "World")
}

打印

Hello World

根据 the fmt docs , %!(EXTRA string=WORLD) 会在您传递额外参数时添加到字符串中,这是格式意外的。也许您正在使用格式字符串 "Hello World" 而不是 "Hello %s",或者传递参数两次?

关于Golang : fmt, 可变参数和 %!(EXTRA type=value) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33400325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com