年中アイス

いろいろつらつら

golangとPythonでの可変長引数(variable arguments)の扱い方

ltsv_pipe/ltsv_filterではフィルタするラベルを渡すのに、可変長引数を使用しています。

可変長引数は、引数の個数を固定せずに渡された個数分が関数わたるようになっています。個数が変わるけど、何かで区切った文字列などを渡すのは送るのは・・・という場合に使えます。

少し厄介なのは、関数を呼び出すときに、定数なら可変長引数で渡せるけど、argsなどを渡すにはどういう書き方をするの?という話。foo("bar1", "bar2", "bar3")といったように書けますが、プログラム内で生成した配列等を可変長引数に渡すには・・・?

golangPythonそれぞれ以下のようになります。

golang

golangでは、変数名の後に...を付けてあげると、渡せるようになります。


Python

Pythonは、*を手前に付ける。