【GO】fmt.Printf関数で配列の中身をフォーマットする


配列の中身つ1つに対してPrintf系のフォーマットにかけることを考えます。

さらにそれを利用して独自のSprintf関数を作ったりしてみる。

 

まず配列をそのまま渡してしまうと、配列自体を1つの型としてフォーマットしてしまうため...オペレータを使って渡してみる。

string配列を渡そうとしたらエラーになってしまった。

cannot use params (type []string) as type []interface {} in argument to fmt.Sprintf

 

関数を見てみると第2引数以降をインターフェース配列として受け取っている。

 

つまりこんな感じで渡すことができる。

interface{}型の配列なのでかなり変な感じがする。

 

渡し方の特性上、追加するときは配列そのものに追加しないといけない。

 

これを踏まえてSprintfに追加処理を加えた独自Sprintfを書いてみます。

前回やった桁数不明の数値を指数表記にせずに文字列にする方法を組み込みます。

 

苦労した数値の文字化が簡単にできました。

formatに関してはかなり面倒な実装になっているので今回は簡単な置き換え。

switch内をいじれば他の型についてもやりたいように変更できます。


コメントを残す

メールアドレスが公開されることはありません。