3

I'm new to go (coming from the C++ world)

I've created a new writer, which "inherits" from io.writer:

type httpWriter struct {
  io.Writer
}

Next I've implemented the Write() function of the io.Writer interface:

func (w *httpWriter) Write(p []byte) (n int, err, error){...}

Then, I've redirected all output to that writer.

I'm having truble to print the actual string in the Write() implementation. I've tried all string formatting I could find in the documentation, but none of them give me the original string as an output.

fmt.Printf("%s\n",p) \\etc..

Would appreciate assistance

1
  • 1
    The simplest approach is to just string(p), which will convert the []byte into a string - with the caveat that not all bytes are guaranteed to be valid UTF-8 characters (runes). Also note that http.ResponseWriter exists as well, which also satisfies io.Writer. Commented Feb 7, 2016 at 19:16

1 Answer 1

5

Ok, two things:

  1. You haven't "inherited" io.Writer (you simply stated that your struct contains a writer). In go, interfaces are implicit. If your struct implements Write(p []byte) (n int, err, error), it is an io.Writer and can be used with any function accepting it. Period. No need to declare anything.

  2. As for your problem: fmt.Printf("%s\n", string(p))

Sign up to request clarification or add additional context in comments.

1 Comment

string(p) is not needed, fmt.Printf("%s\n", p) should work as intended.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.