1. ホーム
  2. スクリプト・コラム
  3. ゴラン

Go言語における20個のプレースホルダーのリスト

2022-02-14 23:58:41

I. コンセプト

プレースホルダーとは何ですか?額面通りに受け取ればいいのです プレースホルダーには様々な種類があることを除けば プレースホルダーは誰のためでもなく 必須であり プログラムレベルでデータをフォーマットするために使われます。

第二に、どの機能が

での Go 言語では、標準パッケージの fmt には、多くの書式付きユーティリティ関数があり、多くの場合、末尾が f は以下のように記載されています。

  • fmt.Printf 文字列を整形し、端末(標準出力)に出力する。
  • fmt.Sprintf 文字列をフォーマットして返します。
  • fmt.Sscanf 文字列からプレースホルダの位置に対応するデータをパースする。
  • fmt.Fscanf から io.Reader を入力し、ファイル、ターミナル(標準入力)を読み込むためのプレースホルダーの対応する位置のデータをパースします。
  • fmt.Fprintf フォーマットされた文字列データを io.Writer タイプで、ファイルに出力します。
  • fmt.Errorf エラータイプのメッセージを作成するためのフォーマット方法。

この作品では、個々の機能にフォーカスするのではなく、単に列挙しているだけなので、わからないことは自分で調べるか、私に聞いてください。

今回の記事の焦点を見てみましょう・・・。

III. プレースホルダーの使用法

プレースホルダーを使用するには % という記法で簡単に表示することができます。

s := fmt.Sprintf("%s really handsome", "老苗")
fmt.Println(s)

// Output
Old Miao is really handsome


%s マークして、"古い苗"文字列を%sの位置で埋めます。次に、実際にどんなプレースホルダーがあるのか見てみましょう。

IV. 一般的なプレースホルダー

まず印刷の対象となるデータを作成します。

type Example struct {
 Content string
}

var data = Example{Content: "Example"}


1. %v、%+v、%#v

%v. の実装がある場合、データの値を取得します。 error インターフェイスを使用する場合、エラーメッセージのみが表示されます。

fmt.Printf("%v", data) 
// Output 
{example}

fmt.Printf("%v", errors.New("I was wrong"))
// Output
I was wrong


%+v. データの値を取得し、構造体であればフィールド名を伝える。

fmt.Printf("%+v", data)
// Output
{Content:example}




%#v. データの値を取得します。構造体であれば、構造体名とフィールド名を運びます。

fmt.Printf("%#v", data)
// Output
main.Example{Content:"Example"}



2. %T

データ型を取得する

fmt.Printf("%T", data)
// Output
main.Example



3. %%

文字通りのパーセント記号です。

fmt.Printf("%%")
// Output
%



V. ブール式プレースホルダー

%t

を true または false で指定します。

fmt.Printf("%t", true)
// Output
true



VI. 整数のプレースホルダー

1. %b

バイナリです。

fmt.Printf("%b", 4)
// Output
100



2. %c

Unicode コードから文字へ

fmt.Printf("%c", 0x82d7)
// Output
seedling



3. %d, %5d, %-5d, %05d

10進数の整数表現。

fmt.Printf("%d,%d,%d", 10, 010, 0x10)
// Output
10,8,16



3つのデータ 10 10進数 , 010 8進数 0x10 16進数

プレースホルダは、最小の幅を指定することもできます。 を次のようなフォーマットで指定します。

%5d
%-5d
%05d



fmt.Printf("|%5d|%-5d|%05d|", 1, 1, 1)
// Output
| 1|1 |00001|



4. o, %#o

8進数表現

fmt.Printf("%o,%o,%o", 10, 010, 0x10)
// Output
12,10,20




多くの開発言語では、0から始まる数値は8進数で表現される。これは %#o プレフィックスに0を付けて出力します。

fmt.Printf("\n%#o\n", 10)
// Output
012



5. %q

と同じです。 %c 同様に、両方の Unicode のコードを文字に変換します。ただし、結果にはシングルクォートが多く含まれます。

fmt.Printf("%q", 0x82d7)
// Output
'seedling'




中国語の文字対応表です。 http://www.chi2ko.com/tool/CJK.htm

6. x, %#x

の16進数表現、小文字のa-fの文字形式。 %#x 0x 接頭辞付きで出力する。

fmt.Printf("%x, %#x", 13, 13)
// Output
d, 0xd



7. X, %#X

16進表示。小文字のA〜Fの字体で表現する。 %#X 出力は0Xから始まります。

fmt.Printf("%X, %#X", 13, 13)
// Output
D, 0XD



8. U、%#U

%U. に翻訳してください。 Unicode フォーマットの指定。

fmt.Printf("%U", 0x82d7)
// Output
U+82D7




%#U. に変換されます。 Unicode 形式で、対応する文字を持ってくる。

fmt.Printf("%#U", 0x82d7)
// Output
U+82D7 'seedling'



VII. 浮動小数点数・複素数

1. %b

浮動小数点数を2の累乗に変換する科学的表記法。

fmt.Printf("%b", 0.1)
// Output
7205759403792794p-56



2. e, %E

10の累乗を表す科学的表記法。

fmt.Printf("%e", 10.2)
// Output
1.020000e+01



fmt.Printf("%E", 10.2)
// Output
1.020000E+01
Difference: %e and %E output case sensitive.



3. %f、%.2f

という浮動小数点数 %.2f は小数点以下2桁を保持することを示し %f はデフォルトで小数点以下6桁を保持し %f と同じです。 %F に相当します。

保持のルールがまだわかっていないんだ、丸め込みと一致するときとしないときがあるから、降りてきて調べてお知らせしよう。

fmt.Printf("%f", 10.2)
// Output
10.200000

fmt.Printf("%.2f|%.2f", 10.232, 10.235)
// Output
10.23|10.23


また、以下のように最小幅を追加することも可能です。

  • %9.2f 最小幅は小数点以下9桁、精度は2です。
  • %9.f または %9f 最小幅は9です。

4. g, %.3g

状況に応じて選択 %e または %f が、末尾の0を削除したものです。

fの場合は以下のようになります。

fmt.Printf("%g|%g", 10.20, 1.200000+3.400000i)
// Output
10.2|(1.2+3.4i)




%e 状況は次のとおりです。

fmt.Printf("%g|%g", 2e2, 2E2)
// Output
200|200




%.3g は、小数点以下3桁を維持する代わりに、3桁のみを維持することを示します。

fmt.Printf("%.3g", 12.34)
// Output
12.3




反省しています。 公式サイトでは%gと%Gの違いがありますが、私は同等と判断してテストしました、もしかしたら私のテストが間違っているかもしれません、公式ドキュメントには を次のようにします。

%g %e for large exponents, %f otherwise. Precision is discussed below.
%G %E for large exponents, %F otherwise



VIII. 文字列とバイトのスライシング

1. %s

文字列またはバイトのスライス

fmt.Printf("%s|%s", "老苗", []byte("嘿嘿嘿"))
// Output
Lao Miao|heyheyhey



2. %q

Go言語の安全なエスケープ、ダブルクオートラッピングを使用します。

fmt.Printf("%q", "老苗")
// Output
"老苗"



3. %x、%x

16進数で、%x 小文字 a - f、%x 大文字 A - F。

fmt.Printf("%x|%X", "seedling", "seedling")
// Output
e88b97|E88B97



IX. ポインタ

p, %#p

のアドレスを16進数で表したものです。 %p を0xとする。 %#p を使用しない場合。

num := 2
s := []int{1, 2}
fmt.Printf("%p|%p", &num, s)

// Output
0xc00000a1d0|0xc00000a1e0


X. その他のマークアップ

1. +

値のプラスとマイナスを表示します。 %+q のみを出力します。 ASCII にエンコードされた文字、または、ASCII エンコードされていない場合は Unicode エンコーディングで出力する。

fmt.Printf("%+d|%+d", 2, -2)
// Output
+2|-2

fmt.Printf("%+q|%+q", "miao","苗")
// Output
"miao"|"\u82d7"



2. -

右側をスペースで埋める、この作品は例ではなく、次のように使用します。 %-5d と浮動小数点 %-9.2f もサポートされています。また、他のプレースホルダーも用意されているので、興味のある方は試してみてください。

3.

  • 上記の例のように、8進数に先頭の0を追加する。
  • 上記のように、16進数に先頭の0xまたは0Xを追加します。
  • に先頭の0xまたは0Xを追加します。 %#p 0xを削除する。
  • %+q 文字列の印刷時にバッククオートラッピングを使用します。
fmt.Printf("%#q", "苗")
// Output
`Miao`




%#U 上記の例のように、文字でコードを印刷します。

4. ' スペース

プラスとマイナスの記号のために、空白を残してください。

fmt.Printf("|% d|", 2)
// Output
| 2|



5. 0

パディング・リーディング・ゼロ、数値の場合はプラスとマイナスの記号の後に移動します。

fmt.Printf("%05s", "a")
// Output
0000a

fmt.Printf("%+05d", 1)
// Output
+0001


精密切捨て文字列

文字列の精度を使用し、切り捨てるために使用されます。

fmt.Printf("%.2s", "abc")
// Output
ab



概要
大文字小文字を区別するプレースホルダーは全部で20個ありますが、実はプレースホルダーに関する知識はもっと多く、プロジェクトで使いにくいので、とりあえず勉強するのはやめときます。

興味のある方は、ホームページへどうぞ。アドレスはこちら https://pkg.go.dev/fmt

Go言語における20のプレースホルダーに関するこの記事は以上です。Go言語の20のプレースホルダーについては、Script Houseの過去の記事を検索するか、引き続き以下の関連記事を参照してください。