Go言語でSliceに要素を追加しようとappend()を利用した際に”evaluated but not used”というエラーで 2度もハマった のでメモ。

このコードどう思う?

PHPやRubyなどを使っていると、こんなコードを見ても違和感ないですよね?

func main() {
  var s []string
  append(s, "hoge")
  append(s, "fuga")
}

まぁ、この記述が諸悪の根源だったりします。
appendはfunc append(s []T, vs ...T) []Tと定義されているため、返り値があります。

正しくは、以下のように記述する必要があります。

func main() {
  var s []string
  s = append(s, "hoge")
  s = append(s, "fuga")
}

参考

以上。