2016-11-12 9 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 
} 

それを呼び出す私の例では、出力は角括弧でそのパスワードプリントを意味し、「PASS [パスワード]」されて終わる

ircConnection.sendMessage("PASS %s", ircConnection.info.password) 

です単にパスワードの代わりに。

私は最初はそれがインターフェイスのように印刷されていましたが、私がそれを...文字列に変更すると、同じ問題があります。

私がしようとした場合:

var test interface{} = ircConnection.info.password 
fmt.Printf("%s", test) 

それは括弧なしで印刷します。

私は次へ何を試してみるべきか分かりません。

答えて

1

だけ

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

私は)あなたがfmt.Fprintf(irc.connection, message+" \r\n", args...をするアレイ/スライス

1

を印刷しようとしていたになることを

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

ニーズをそれを考え出し、[OK]を - 、args...はない注意してくださいargs。あなたの関数がargs ...interface{}を宣言すると、残っているすべての引数がスライスとして取得されます。 argsFprintfに渡すと、そのスライスが印刷されます。一つのこととして、スライス。引数のリストにスライスを戻すには、...を使用します。

Passing arguments to ... parametersを参照してください。

関連する問題