モジュール 1 · レッスン 5 / 5コース内の 5/50~10 min
モジュールのレッスン (5/5)
fmtによる入出力
標準ライブラリの fmt パッケージは、印刷用の主要なツールです。
コンソール、文字列のフォーマット、入力の読み取り。使用したことがある場合
C の printf は、くつろげるものですが、さらに洗練されています。
%v 動詞と %T 動詞のおかげで。
Print、Println、Printf: 3 つの関数、3 つの動作
Go
fmt.Print("ciao ", "mondo") // "ciao mondo" (niente newline finale)
fmt.Println("ciao", "mondo") // "ciao mondo\n" (newline + spazi tra argomenti)
fmt.Printf("eta=%d\n", 36) // "eta=36\n" (format string esplicita)いつも使う動詞
| 動詞 | 印刷内容 | 例 |
|---|---|---|
%v | 「デフォルト値」 — 任意のタイプで機能します。 {Ada 36} | |
%+v | %v と似ていますが、フィールド名が構造体にあります。 {Name:Ada Age:36} | |
%#v | 値の「Go 構文」表現 | main.User{Name:"Ada", Age:36} |
%T | 値の型 | float64 |
%d | 10 進数の整数 | 42 |
%f | フロート | 3.140000 |
%.2f | 小数点以下 2 桁の浮動小数点 | 3.14 |
%s | 文字列 | Ada |
%q | 「引用符で囲まれた」文字列 (引用符とエスケープを含む) | "Ada\n" |
%t | ブール | true |
%x | 16 進数 (小文字) | 2a |
%b | バイナリ | 101010 |
Go
u := struct{ Name string; Age int }{"Ada", 36}
fmt.Printf("%v\n", u) // {Ada 36}
fmt.Printf("%+v\n", u) // {Name:Ada Age:36}
fmt.Printf("%T\n", 3.14) // float64Sprintf: 文字列を出力せずに構築する
Printf と同じインターフェイスですが、結果は
string:
Go
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anniメッセージ、ログ、エラーを作成するために常に使用します。
Errorf: 文字列 + エラーの折り返し
fmt.Errorf は、Printf スタイルの書式設定を使用して error を作成します。と
特別な動詞 %w を使用すると、既存のエラーを ラップしてそのエラーを保持できます
チェーン (これについてはインターフェイス モジュールで詳しく説明します):
Go
if _, err := os.Open("missing"); err != nil {
return fmt.Errorf("apertura config: %w", err)
}あなたの番です
運動#go.m1.l5.e1
試行回数: 0読み込み中…
fmt.Println を使用して文字列「ciao mondo」を出力します。
エディターを読み込み中…
ヒントを表示
`fmt.Println` は文字列を受け取り、改行そのものを追加します。
3 回の試行後に解決策が利用可能になります
運動#go.m1.l5.e2
試行回数: 0読み込み中…
fmt.Printf を使用して、整数の %d 動詞を使用して、'eta=36' に続いて改行を出力します。
エディターを読み込み中…
ヒントを表示
`Printf` は改行を追加しません。フォーマット文字列に `\\n` を含める必要があります。
3 回の試行後に解決策が利用可能になります
Quiz#go.m1.l5.e3
準備完了値の動的な TYPE を出力する動詞はどれですか?
Go
fmt.Printf("?\n", 3.14)要約
Print/Println/Printfはスペースと改行が異なります。%vは、任意の型で機能するワイルドカードです。%+vはフィールド名を示します。%Tはタイプを出力します (素早いデバッグに役立ちます)。Sprintfは文字列を構築します。Errorfは、ラッピング (%w) でエラーをビルドします。Printfは改行を追加しません。フォーマット文字列に自分で書きます。