Pierre Tasci
Pierre Tasci

Reputation: 450

multiple-value in single-value context no return func

I have a func in Go that simply writes to a buffer. I have no return type set on the func so I am not sure why I am seeing this error. Here is my code:

func Write(buffer *bytes.Buffer, values ...string) {
  for _, val := range values
    _, err := *buffer.WriteString(val)
    if err != nil {
      // print error
    }
  }
  _, err := *buffer.WriteString(" ")
  if err != nil {
    // print error
  }
}

It complains at both lines where I have buffer.WriteString. This leads me to believe it has something to do with the return types of the WriteString method on the buffer but I am not experienced enough in Go to know for sure.

Any help would be appreciated.

Edit: Updated code.

Upvotes: 1

Views: 324

Answers (1)

Mr_Pink
Mr_Pink

Reputation: 109367

You don't need to dereference pointers to call methods in Go. The * operator before buffer.WriteString is applied to the returned values. To dereference buffer you would need to write (*buffer).WriteString, but that's not needed at all:

func Write(buffer *bytes.Buffer, values ...string) {
    for _, val := range values {
        _, err := buffer.WriteString(val)
        if err != nil {
            // print error
        }
    }
    _, err := buffer.WriteString(" ")
    if err != nil {
        // print error
    }
}

Upvotes: 1

Related Questions