Go で文字列をフォーマットする方法

Go で文字列をフォーマットする方法

Go コードを書いていると、多くの状況で文字列の書式設定が非常に役立つことがわかります。入力を解析したり、単純な連結よりも複雑な出力を作成したりする場合があります。プレーン文字列以外の型を使用している可能性があります。





Go での文字列の書式設定は、Java から Haskell までの言語でも使用される、使い慣れた printf 関数のプロセスと構文を使用します。





Go は、 fmt パッケージ。書式設定する操作または入力に応じて、文字列の書式設定に関数と動詞を使用できます。





Go での文字列の書式設定

fmt パッケージの関数は、対応するものと似ています。 bash の printf 関数 または C. Go は C からフォーマット動詞を派生させます。

あなたが使う 文字列フォーマット動詞 含む文字列内の変数値のプレースホルダーとして。次に、そのフォーマット文字列を次のような関数に渡すことができます Printf 、それらのプレースホルダーに対応する値とともに。



文字列フォーマットの動詞は使用できません 印刷する プリントイン メソッド。次のような方法でそれらを使用できます Printf スプリント .

fmt.Println("This is a test %v", 90) 
fmt.Printf("This is a test %v", 90)

%の 動詞は、任意の値をデフォルト形式で出力します。の プリントイン メソッドは動詞を認識せず、受け取った引数を出力します。の Printf スプリント どちらの関数も、渡す最初の文字列引数をフォーマットします。





  整数をフォーマットした結果

fmt パッケージの文字列フォーマット関数

文字列の書式設定 Go プログラミング言語 文字列書式設定関数と動詞を使用する必要があります。関数は書式設定された文字列を返し、動詞は文字列への入力のプレースホルダーです。

サムスンのarゾーンとは

Printf メソッドは、フォーマット指定子に従って入力をフォーマットし、書き込まれたバイト数またはエラー数を返します。





fmt.Printf("This is a test %v", 90) 

従来、エラーを心配する必要はありません Printf 方法。

スプリント メソッドは、指定された形式に従って書式を設定し、結果を文字列として返します。

var result = fmt.Sprintf("This is a test %v", 90) 

Fprintf メソッドは、文字列をフォーマットしてライターに書き込みます ( io.ライター インターフェース)

// write data to standard output 
result, err = fmt.Fprintf(writer, "This is a test %v", 90)

Fscanf メソッドはリーダーからスキャンし、指定された形式に従ってフォーマットします。

var take string 

// read data from the given string
readString := strings.NewReader("This is a test")

read, err := fmt.Fscanf(reader, "%v", &take)

この場合、 Fscanf リーダーからの文字列をデコードして 取った 変数、および 読んだ 変数は、フォーマットの結果を保持します。

文字列フォーマット動詞

Go には、文字列の書式設定関数と一緒に使用できる多くの書式設定動詞が用意されています。

次のような一般的な文字列フォーマット動詞があります。 %の 文字列フォーマット関数の例の動詞。一般的な文字列書式設定動詞を使用して、任意のデータ型を書式設定できます。

Windows10でグラフィックカードを確認する方法

を使用できます。 %#の 任意の値を出力する動詞 %+v 構造体の場合、 %T 任意の値の型の動詞、および %% 値のない動詞。

type any struct {  
name string
age int
isLoggedIn bool
}

var instance = any {
name: "John Doe",
age: 34,
isLoggedIn: true,
}

var result = fmt.Sprintf("This is a struct formatting example %+v", instance)
fmt.Println(result)

結果 variable は、インスタンス化された構造体のフォーマットされた文字列を保持します。印刷すると、次のようになります。

This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}

チャネルやポインターなど、特定の Go ネイティブ データ型をフォーマットするための動詞があります。

%t ブール値。
%d int、int8など
%d、%#v で印刷された場合は %#x uint、uint8など
%g float32、complex64 など。
%s ストリング。
%p ちゃん。
%P ポインター。

次のように大文字と小文字が区別されるため、動詞を間違えないようにする必要があります。 ちゃん ポインタ 動詞。

整数と浮動小数点数のフォーマット

整数をフォーマットするための文字列フォーマット動詞があります 異なる拠点 .これらの動詞のいずれかを使用して、整数をフォーマットできます

%b ベース2
%c 対応する Unicode コード ポイントで表される文字。
%d ベース10。
%O ベース8。
%O 接頭辞 0o 付きの 8 進法。
%q Go 構文で安全にエスケープされた単一引用符で囲まれた文字リテラル。
%バツ 底は 16 で、a ~ f は小文字です。
%バツ 16 進数、A ~ F は大文字。
%の Unicode 形式: U+1234; 「U+%04X」と同じ。

たとえば、次を使用して整数をフォーマットできます。 %d 動詞:

var result = fmt.Sprintf("This is an integer formatting example %d", 90) 
fmt.Println(result)

これらは、浮動小数点数をフォーマットするための動詞です。

%b strconv のように、指数が 2 の累乗の 10 進数を使用しない科学的表記法。 「b」形式の FormatFloat。 -123456p-78
%と 科学表記法。 -1.234456e+78
%と 小数点あり、指数なし。例: 123.456
%f 小数点あり、指数なし。例: 123.456
%F %f の同義語。
%g 大きな指数の場合は %e、それ以外の場合は %f。以下の精度。
%G 指数が大きい場合は %E、そうでない場合は %F
%バツ 16 進数表記 (2 つの指数の 10 乗)、例: -0x1.23abcp+20。
%バツ 大文字の 16 進数表記。 -0X1.23ABCP+20。

以下は、指数を使用せずに小数点をフォーマットする例です。 %f 動詞。

var result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

タイプが不明な場合は、いつでも一般動詞を使用できます。

文字列とバイトのフォーマット

Go では、バイト型の文字列とスライスはかなり似ています。これらは、文字列とバイトをフォーマットするためのフラグです。

%s 文字列またはスライスの未解釈のバイト
%q Go 構文で安全にエスケープされた二重引用符付きの文字列
%バツ base 16、小文字、1 バイトあたり 2 文字
%バツ base 16、大文字、1 バイトあたり 2 文字

を使用して文字列をフォーマットする例を次に示します。 %s 動詞。

var score = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

fmt パッケージは Python プログラミングに不可欠です

fmt パッケージには、文字列の書式設定に必要なほとんどの機能が含まれています。 Go も提供します 文字列 文字列操作用のパッケージと ログ ロギング用に文字列をフォーマットできるパッケージ。

fmt パッケージには、 io.ライター io.リーダー インターフェイス。 Web アプリケーションやコマンド ライン アプリケーションの構築など、多くのユース ケースで役立つことがわかります。