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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.