So-net無料ブログ作成

Go 言語で Linked List [golang]

普段 Python を使っていて、新たに Go でコードを書こうとすると、最初は型の宣言が後置だったり、ループが for しかなかったり、 switch case の書き方が複数あったりするのが戸惑うんだけれども、そこらへんに少し慣れてくると、配列(スライス)のサイズが固定なのに行き詰まってしまう。

スライスの書き方は Python に似ているのでなじみ深いのだが、Python の場合は、どんどん要素を追加していくとバッファが自動で増やされていくのに対して Go ではバッファの最大は固定されているところで、
「えっと、この配列のサイズはいくつで確保すればいいんだっけ・・・」と悩んでしまう。
C 言語でもそうだし、メモリにランダムにアクセスするためには、連続したメモリを 確保する必要があって、勝手にどんどん増やせないのはわかるのだが、日頃、いかに Python で楽していたことか。

んで、全体の数がわからない要素を追加していくにはどうすればいいのか悩んでいたのだがビルトインパッケージに、Linked List があることを発見
http://golang.org/pkg/container/list/
https://gist.github.com/nakagami/6518534

サンプル例を改造してみた。
https://gist.github.com/nakagami/6518534
要素には、どんな型も入れられるので、 Java の裸の List クラスみたいなものなので「型安全じゃない」っていう人がいるのはわかるけど、まあいいんじゃないですかね。

配列、スライスと container/list を使うと、Python のリストでやっていたことがなんとかできそう。
Python の set はないから、Go の場合は map で代用するんだろうな。

配列、スライスと *list.List, map の組み合わせでなんとかなりそう

コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント

トラックバック 0