Goでキューを実装するのには特別なデータ構造は必要がない。ただのスライスを使って、キューに加えるにはappend、キューから取り出すにはスライシングを使えば十分だ。キューが空かどうかはlenが0かどうかを調べれば良い。 // int型のキューを作成 q := make([]int, 0) // キューに1, 2, 3を追加 q = append(q, 1) q = append(q, 2) q = append(q, 3) // 最初の値を取得 v1 := q[0] q = q[1:] // 次の値を取得 v2 := q[0] q = q[1:] つまりスライスqの指している場所をqの内部配列の右側にどんどんずらしていくようなイメージだ。内部配列は必要に応じて再割り当てされるのでキューがあふれることはないし、再割り当ての際に左側の参照されていない領域は捨てられる(コピーされない)のでメモリ