2016-03-14 58 views
1

我在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方法的返回類型有關,但我在Go中沒有足夠的經驗知道確切的事情。

任何幫助,將不勝感激。

編輯:更新的代碼。

+0

我認爲錯誤是由於你沒有從'WriteString'處理的返回值 - https://golang.org/pkg /bytes/#Buffer.WriteString - 你需要'_'來表示你沒有賦值,或者你需要賦值給某個變量。 – evanmcdonnal

+0

我試過了,它仍然抱怨。我會用最新版本更新我的問題。 –

+0

實際投訴是什麼? – kichik

回答

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

這樣做了。我不知道明星只提供退貨價值。 –