DRYな備忘録

Don't Repeat Yourself.

【Go言語】container/listのRemoveでハマった

や、ハマったってほどでもないんだけど、まあそうだよね、って感じたメモ。

以下のように書いて、barquxをlistから排除しようとした

barは排除できてるけど、quxは排除できてないことがわかる。

原因

Remove(e)を呼んだ時点で、eの後ろのポインタもnilになるので、Nextがnilになってループの終了条件にひっかかる。

The Go Playground

解決

本当にはずかしながら、思いつかなかった↓ 

stackoverflow.com

RemoveしてからNextするからいけないのであって、先に次のポインタを取得しておけばよいのだ

The Go Playground

雑感

  • 再初期化式でNext呼ぶことしか考えてなかった...
  • 俺、才能無えわ

DRYな備忘録