@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Go の []byte がわからない

JSON のパースとかをやってみようと思ってドキュメントを読むと byte とか出てきて、 byte ってなんだよ文字列とどう違うんだよ C も Java もやったことないから意味わかんねえよ、と思って go string byte difference とかでぐぐって出てきた記事を少し読んだ。

Strings, bytes, runes and characters in Go - The Go Blog

こっちは、文字列と文字を扱うのは難しいんだよ、的なことを言っているのだな、ということはわかったが、 string と byte がどう違うのかという知りたかったことはイマイチ解決できなかった。

Arrays, slices (and strings): The mechanics of 'append' - The Go Blog

こっちは長くて半分も読めなかった。そもそも slice について知りたかったわけじゃないんだ。

こういうプリミティブな部分で詰まると、おそらく勝手がわかってないから適切な検索キーワードを思いつけずに、探し物をしても正解にたどり着けず挫折する、という流れでだいたいいつも終わる。こういうの自分は非常に多くて、何か新しいことに挑戦すると10回やって10回はこうなるのだが、世間一般にみんなそんなに失敗ばかりしているとはとても思えなくて、一体どうしてみんな行き詰まらないんだろうと心底不思議だ。自分が人の数倍バカで要領が悪いのだとしか考えられない。

結局、現時点では、「string と byte は型が違うデータで、それぞれを必要とする関数には型の合ったデータを渡さなければいけないから、そういうものだと思って黙ってその通りにするしかない。いつ string が必要でいつ []byte が必要なのかは、おそらく何かしら一貫性のある法則があるのだろうがいまは理解できないので、都度ドキュメントを読むか丸暗記するしかない。なぜそうなっているのか?という理由をいま考えても無意味なので、考えないようにする」と考えることにしたが、わからないことをわからないままとりあえず先に進むというやり方は気持ち悪くて嫌だ。