Golang標準ライブラリのインポート
この記事ではGo言語の開発で標準ライブラリをインポートする方法と使い方を紹介します!
Go言語のプロジェクト作成方法やデバッグ方法についてはこちらの記事を参考にしてください。
Go標準ライブラリとは?
Goの標準ライブラリとはGo言語をインストールした時点で使用することができるパッケージのことです。
この標準ライブラリは例えば、標準出力やログ機能、ファイルの読み書きなどなど基本的な機能が揃っています。
また、この標準ライブラリはGoのバージョンによって削除されたり、または新たに追加されるものもあります。
標準ライブラリについてはこちらに一覧があるので必要なタイミングで確認すると良いでしょう。
標準ライブラリのインポート
それでは早速標準ライブラリをインポートして機能を使ってみましょう!
まずは最も使うであろうfmtパッケージをインポートしてみます。
import文の中にパッケージ名であるfmt
をダブルクォーテーションを囲んで記述します。
この状態のままだと、main.goファイルの中でfmt
の機能を使用していないので、赤い波線で警告を出されてしまいます。
カーソルを当てると、「"fmt" imported and not used」と書いてありますね。とても親切で分かりやすいです!
fmtで標準出力
fmtパッケージは標準出力をしたり、与えられた値から文字列値を作り出したりできます。
まずは最も一般的なPrint関数から使ってみましょう。以下のようにmain関数の中でfmt.Printを使用します。
func main() {
fmt.Print("Hello, World!")
}
プログラムを書けたらデバッグをしてみましょう!
デバッグコンソールに「Hello, World!
」と表示されましたでしょうか!
Printメソッドのいろいろ
まずは文字列を標準出力することができましたね!
次は数値やbool型の値を出力してみましょう!
以下のような形で記述できるかと思います!
func main() {
fmt.Print(12345)
}
func main() {
fmt.Print(true)
}
もしくは変数を使った場合は以下のようにも記述できます!
以下の書き方でも同じ出力が得られます。
func main() {
num := 12345
fmt.Print(num)
}
func main() {
bl := true
fmt.Print(bl)
}
では次は、Printメソッドを2行続けて書いてみましょう!
以下のように書いたら実行してみます。
func main() {
fmt.Print("1行目の文字です")
fmt.Print("2行目の文字だよ")
}
デバッグしてみると「1行目の文字です2行目の文字だよ」と横並びで連続して出力されてしまいます!
しかし、問題ありません。これが正しい挙動です。
Printメソッドでは値を出力するときに末尾に改行を入れないため、上記のような出力結果となってしまいます!
Printlnメソッドで改行して出力
それでは1行ずつ開業して出力するにはどうしたらいいでしょうか。
答えは、Printlnメソッドを使います。Printの後ろにlnが付いているので間違えないでください!
実行して確認してみましょう!
func main() {
fmt.Println("1行目の文字です")
fmt.Print("2行目の文字だよ")
}
1行目の文字です
2行目の文字だよ
というように出力されましたか?出力されていればOKです!
Printlnメソッドでは出力の末尾に改行が追加されるようになっているのです。非常に便利ですね!
フォーマットを指定して出力
fmtパッケージにはPrintメソッド、Printlnメソッド以外にPrintfメソッドが存在します。
このPrintfメソッドは以下のように書かれています。
Printfはフォーマット指定子に従ってフォーマットし、標準出力に書き込む。 書き込まれたバイト数と発生した書き込みエラーが返される。
https://pkg.go.dev/fmt#Printf
基本的な使い方
文字列の出力
基本的な文字列を出力する例を見てみましょう!
package main
import "fmt"
func main() {
name := "Go言語"
fmt.Printf("こんにちは、%s!\n", name)
}
上の例では、%s
が文字列を挿入するためのプレースホルダーとなっており、name
変数の値がその位置に挿入されます。
実行すると出力は以下のようになります。
こんにちは、Go言語!
数値の出力
整数や浮動小数点数も簡単に出力できます。
package main
import "fmt"
func main() {
age := 30
height := 1.75
fmt.Printf("年齢: %d 歳, 身長: %.2f メートル\n", age, height)
}
ここでは、%d
が整数を、%.2f
が小数点以下2桁の浮動小数点数を示しています。出力は以下のようになります。
年齢: 30 歳, 身長: 1.75 メートル
複数の値の出力
複数の値を同時に出力することもできます。
package main
import "fmt"
func main() {
name := "太郎"
age := 20
fmt.Printf("名前: %s, 年齢: %d\n", name, age)
}
出力は以下のようになります。
名前: 太郎, 年齢: 20
よく使うフォーマット指定子
%s
:文字列%d
:整数(10進数)%f
:浮動小数点数%t
:ブール値%v
:デフォルト形式(変数の型に応じて自動的に選ばれる)%+v
:フィールド名付きで構造体を出力%T
:変数の型
特殊なケース
構造体の出力
%+v
指定子を使うと、構造体のフィールド名とその値を出力することができます。
次に、構造体を出力する例を見てみましょう。
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "太郎", Age: 20}
fmt.Printf("%+v\n", p)
}
この例では、%+v
を使ってPerson
構造体のフィールド名とその値を出力しています。出力は以下のようになります。
{Name:太郎 Age:20}
フィールド幅と精度の指定
フィールド幅と精度を指定して出力することもできます。
package main
import "fmt"
func main() {
number := 123.456
fmt.Printf("通常: %f\n", number)
fmt.Printf("フィールド幅指定: %10f\n", number)
fmt.Printf("フィールド幅と精度指定: %10.2f\n", number)
}
出力は以下のようになります。
通常: 123.456000
フィールド幅指定: 123.456000
フィールド幅と精度指定: 123.46
おわりに
fmtパッケージはGo言語における標準出力機能を提供します。
フォーマット指定子を使って、さまざまなデータ型を柔軟に整形し、見やすく出力することができます。
初心者の方も、この基本的な使い方をマスターすることで、より効果的にデバッグやログの出力を行うことができるようになるかと思います!