文字列のフォーマットは、文字列を動的に作成する必要がある場合に必要不可欠です。
そこで本記事では、Golangの文字列フォーマットを使って何ができるかを深く掘り下げていきます。
Golangで文字列をフォーマットするさまざまな方法
文字列のフォーマットを行うには、大きく分けて2つの方法があります。
- Printf()関数を使用して、フォーマットされた文字列を表示する
- Sprintf()関数を使用して、ターミナルに表示する代わりに、文字列を作成して返す
これらの関数は両方ともfmtパッケージから利用できます。
Golangで文字列をフォーマットするためにPrintf()関数を使用する
Printf()関数を使用すると、フォーマットされた文字列をコンソールに出力することができます。そこで、printf関数を使って書式付き文字列を作成してみましょう。
実際の値をフォーマットする
実際の値は、シンプルで簡単な方法でフォーマットすることができます。そこで、まずint型から始めてみましょう。
int型の値を表示するには、「%d」を使用します。
fmt.Printf("%d", 98) // 98
浮動小数点を表示するには、次のように 「%f」を使用します。
fmt.Printf("%f", 10.2) // 10.20000
float型は、以下のように科学的記数法を用いることもできる。
fmt.Printf("%e\n", 55000000.45) // 5.500000e+07
fmt.Printf("%E\n", 73000000.45) // 7.300000E+07
float型は自由に書式を設定することができます。
bool値は 「%t」 を使用してフォーマットします。
fmt.Printf("%t", true) // true
文字は、「%c」フォーマッターを使用してフォーマットすることができます。
fmt.Printf("%c", 'x') // x
文字列をフォーマットするには、「%s」フォーマッタを使用します。
fmt.Printf("%s", "Hello World") // Hello World
// 文字数を指定してフォーマットする場合
fmt.Printf("|%8s|", "orange") // | orange|
エンコードされた値のフォーマット
バイナリーをフォーマットするには、「%b」を使用します。
fmt.Printf("%b", 98) // 1100010%
16進の値は、「%x」で単純にフォーマットすることができます。
fmt.Printf("%x", 123) // 11000107b
値のデータ型を取得する
値の型を表示するには、「%T」フォーマッタを使います。(大文字のTです)
fmt.Printf("%T", 98) // int
ポインタ型の値のフォーマット
ポインターは、「%p」フォーマッターを使用してフォーマットすることができます。
package main
import (
"fmt"
)
func main() {
var x *int // ポインタ型を定義
var y int
y = 98
x = &y
fmt.Printf("%p", x) // 0xc000132008
}
構造体のフォーマット
構造体の値を表示するには、「%v」を使用します。
また、「%+v」は構造体のフィールド名を含みます。また、「%#v」は構造体の Go-representationを表示します。
以下はそのコード例です。
package main
import (
"fmt"
)
type Person struct {
name string
}
func main() {
name := Person{"Tanaka"}
fmt.Printf("%v\n", name) // {Tanaka}
fmt.Printf("%+v\n", name) // {name:Tanaka}
fmt.Printf("%#v\n", name) // main.Person{name:"Tanaka"}
}
Sprintf() 関数を使ったGolang文字列のフォーマット書式
Sprintf関数は、文字列を作成して返します。ターミナルに表示せずに整形された文字列を作成することができます。
s := fmt.Sprintf("%d", 98) // 文字列を作成する
fmt.Println(s) // 98