单值上下文中的多值没有返回函数

时间:2016-03-14 21:28:59

标签: go

我在Go中有一个func,它只是写入缓冲区。我在func上没有设置返回类型,所以我不确定为什么我看到这个错误。这是我的代码:

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
  }
}

它在我有buffer.WriteString的两行都抱怨。这让我相信它与缓冲区上的WriteString方法的返回类型有关,但我没有足够的经验去了解。

任何帮助都将不胜感激。

编辑:更新了代码。

1 个答案:

答案 0 :(得分:1)

您不需要在Go中取消引用调用方法的指针。 *之前的buffer.WriteString运算符应用于返回的值。要取消引用buffer,您需要编写(*buffer).WriteString,但根本不需要:

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
    }
}
相关问题