タグ

qiitaとappendに関するnabinnoのブックマーク (1)

  • GoのSliceもヤバイ - Qiita

    先日SwiftのArrayがヤバイという投稿を書きましたが(ただし、SwiftのArrayはすばらしく生まれかわりました)、実はGoのSliceでもまったく同じことが起きます。 GoのSliceのヤバイ挙動 次のコードはSwiftのArrayがヤバイで取り上げたコードをGoに書き換えたものです。結果はSwiftのときと同じです。 a := []int{11, 22, 33} // a == [11 22 33] b := a // b == [11 22 33] a[0] = 777 // b[0]も777になる a = append(a, 44) a[0] = 888 // b[0]は888にならない appendの結果をaに再代入してるから、そこでSliceの実体が変わってしまってるんだろうと思うかもしれません。しかし、少しだけ変更した次のコードでは、aに再代入しているにも関わらずaと

    GoのSliceもヤバイ - Qiita
  • 1