我正在尝试使用irc客户端,但我无法使用Fprintf正确地“打印”字符串。这是无效的方法:
func (irc *IrcConnection) sendMessage(message string, args ...interface{}) (error){
fmt.Printf("Sending: "+message, args)
_, err := fmt.Fprintf(irc.connection, message+" \r\n", args)
if err != nil{
return err;
}
return nil
}
我称之为
的一个例子ircConnection.sendMessage("PASS %s", ircConnection.info.password)
输出最终为“PASS [密码]”,这意味着密码打印方括号而不是密码。
我虽然起初它是... interface {}使它像那样打印但是如果我把它改成...字符串它有同样的问题。
如果我尝试:
var test interface{} = ircConnection.info.password
fmt.Printf("%s", test)
没有括号打印。
我很新,不知道下一步该尝试什么。
答案 0 :(得分:2)
好的,刚想出来
_, err := fmt.Fprintf(irc.connection, message+" \r\n", args)
需要成为
_, err := fmt.Fprintf(irc.connection, message+" \r\n", args...)
我正在尝试打印数组/切片
答案 1 :(得分:1)
您想要fmt.Fprintf(irc.connection, message+" \r\n", args...
) - 请注意args...
,而不是args
。当你的函数声明args ...interface{}
时,这意味着它将把所有剩余的参数作为切片。当您将args
传递给Fprintf
时,您会告诉它打印该切片。作为一件事,一片。要将切片展平回到参数列表中,请使用...
。