2016-11-12 45 views
0

我正在嘗試我的手在一個IRC客戶端,但我無法獲得一個字符串使用Fprintf「正確打印」。這是不工作的方法:字符串打印不正確使用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) 

它打印不帶支架。

我是新來的,不知道接下來要嘗試什麼。

回答

1

好吧,只是理解了它

_, err := fmt.Fprintf(irc.connection, message+" \r\n", args) 

需求,成爲

_, err := fmt.Fprintf(irc.connection, message+" \r\n", args...) 

我試圖打印數組/片

1

你想fmt.Fprintf(irc.connection, message+" \r\n", args...) - 注意args...,不args。當你的函數聲明args ...interface{}這意味着它將所有剩下的參數作爲一個片段。當你通過argsFprintf時,你告訴它打印該切片。作爲一件事,一個切片。要將切片展平成參數列表,請使用...

請參閱Passing arguments to ... parameters