文字列フォーマット
メニューを表示するにはスワイプしてください
すべての基本データ型について学んだので、文字列フォーマットについて探求します。プログラミングにおける文字列フォーマットは、変数の値を文字列に組み込むことを指します。
注意
import文は、Goアプリケーションにパッケージをインポートするために使用されます。パッケージは、関連するGoソースファイルの集合であり、一連の機能やサービスを提供します。fmtパッケージは、文字列をフォーマットするための関数を提供します。
fmtパッケージの関数のひとつに、これまで使用してきたPrintln関数があります。Println関数は、出力テキストを毎回新しい行に表示します。一方、Printという関数は、改行せずに出力を表示します。
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
一般的に、これらの関数を使用して、次の方法で文字列データ内に変数の値を挿入できます。
index.go
123456789package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Println("There are", n, "cats,", in, "of them are inside the house while", out, "are outside.") }
しかし、この方法は効率的とは言えません。変数を適切な位置に挿入するために文字列を複数のセグメントに分割する必要があり、より複雑なケースでは煩雑になります。Printf関数はこの問題を解決し、書式付き出力の表示を簡単にします。
Printf関数は、最初の引数としてフォーマット文字列を受け取り、その後にフォーマット文字列へ挿入する値(または変数)を指定します。フォーマット文字列には、出力形式を定義するプレースホルダー(書式指定子)が含まれています。
以下は例です。
index.go
12345678910package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Printf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) }
例で示されているように、フォーマット指定子は、文字列内で特定のデータ型のプレースホルダーとして機能する記号です。各データ型ごとに異なるフォーマット指定子が存在します。以下の表は、基本的なフォーマット指定子の一覧です。
| フォーマット指定子 | データ型 |
|---|---|
%d | 整数 |
%s | 文字列 |
%f | 浮動小数点数 |
%t | ブール値 |
%c | 文字(またはルーン) |
変数はフォーマット文字列内のそれぞれのプレースホルダーに置き換えられます。上記の例の出力では、最初の%dはnの値に置き換えられます。同様に、2番目は対応する変数であるinに、最後の%dはoutの値に置き換えられます。
また、Sprintf関数を使用して文字列をフォーマットし、その結果を文字列変数に格納することもできます。Sprintfは文字列をフォーマットして、その結果の文字列を返すため、画面にすぐに表示するのではなく、保存や他の用途に利用できます。
index.go
123456789101112package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in var text string = fmt.Sprintf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) fmt.Println("Text:", text) }
これまでに学習した複数の概念を1つのプログラムに組み込んだ、より複雑な例を紹介します。次のプログラムとその出力を確認することで、コードリーディングのスキル向上に役立ちます。
index.go
12345678910package main import "fmt" func main() { var numA float32 = 17.7 var numB int = 10 var str string = fmt.Sprintf("It is %t that 'a' is bigger than 'b'.", numA > float32(numB)) fmt.Printf("The numbers 'a' and 'b' are %f and %d. %s", numA, numB, str) }
場合によっては、コンパイラが値とフォーマット指定子を一致させるために暗黙的な型変換を行います。次の例で示します。
index.go
1234567package main import "fmt" func main() { var char rune = 'A' fmt.Printf("The Unicode decimal value of %c is %d", char, char) }
ルーン「char」は、文字としても数値としても出力される。ただし、場合によってはコンパイラがエラーを出すことがある。例えば、次のコードは「float」を暗黙的に「int」へ変換できないため、無効な出力となる。
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください