字符串无法使用FprintF

时间:2016-11-12 05:14:06

标签: go

我正在尝试使用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)

没有括号打印。

我很新,不知道下一步该尝试什么。

2 个答案:

答案 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时,您会告诉它打印该切片。作为一件事,一片。要将切片展平回到参数列表中,请使用...

请参阅Passing arguments to ... parameters