配列の並び替えのパターンの列挙をする関数をgolangで書く.ABC123で必要になったので. TL;DR QuickPermを使うと良さそうです. 上記はコピペ用でこっからはいくつか方法を試して最後に速度比較します. 方法1: naive dfs 素直にdfsをする.前から数字を決めていって,決めたらその数字を選択肢から消して次へ行く.全部使ったら(選択肢が無くなったら)1つのパターンとして採択する. 上のコードで使ってるサブ関数たちです.この後の方法でも使ってるのですが面倒なので1度だけ掲載. 方法2: Heap Algorithm Heapのアルゴリズム を使う. 方法3: QuickPerm QuickPermを使う. 方法4(おまけ): QuickPerm + Channel Generate all permutations in goとかを見ているとChannelを使った実装