Go言語 プログラミング

Golangパッケージのインポート(標準出力のfmt編)

Golang標準ライブラリのインポート

gopher
by Renée French

この記事ではGo言語の開発で標準ライブラリをインポートする方法と使い方を紹介します!
Go言語のプロジェクト作成方法やデバッグ方法についてはこちらの記事を参考にしてください。



Go標準ライブラリとは?

Goの標準ライブラリとはGo言語をインストールした時点で使用することができるパッケージのことです。

この標準ライブラリは例えば、標準出力やログ機能、ファイルの読み書きなどなど基本的な機能が揃っています。
また、この標準ライブラリはGoのバージョンによって削除されたり、または新たに追加されるものもあります。

標準ライブラリについてはこちらに一覧があるので必要なタイミングで確認すると良いでしょう。



標準ライブラリのインポート

それでは早速標準ライブラリをインポートして機能を使ってみましょう!
まずは最も使うであろうfmtパッケージをインポートしてみます。

import文の中にパッケージ名であるfmtをダブルクォーテーションを囲んで記述します。
この状態のままだと、main.goファイルの中でfmtの機能を使用していないので、赤い波線で警告を出されてしまいます。

カーソルを当てると、「"fmt" imported and not used」と書いてありますね。とても親切で分かりやすいです!



fmtで標準出力

fmtパッケージは標準出力をしたり、与えられた値から文字列値を作り出したりできます。
まずは最も一般的なPrint関数から使ってみましょう。以下のようにmain関数の中でfmt.Printを使用します。

Go
func main() {
    fmt.Print("Hello, World!")
}

プログラムを書けたらデバッグをしてみましょう!
デバッグコンソールに「Hello, World!」と表示されましたでしょうか!



Printメソッドのいろいろ

まずは文字列を標準出力することができましたね!
次は数値やbool型の値を出力してみましょう!

以下のような形で記述できるかと思います!

Go
func main() {
    fmt.Print(12345)
}
Go
func main() {
    fmt.Print(true)
}

もしくは変数を使った場合は以下のようにも記述できます!
以下の書き方でも同じ出力が得られます。

Go
func main() {
    num := 12345
    fmt.Print(num)
}
Go
func main() {
	  bl := true
    fmt.Print(bl)
}


では次は、Printメソッドを2行続けて書いてみましょう!
以下のように書いたら実行してみます。

Go
func main() {
    fmt.Print("1行目の文字です")
	  fmt.Print("2行目の文字だよ")
}

デバッグしてみると「1行目の文字です2行目の文字だよ」と横並びで連続して出力されてしまいます!
しかし、問題ありません。これが正しい挙動です。

Printメソッドでは値を出力するときに末尾に改行を入れないため、上記のような出力結果となってしまいます!

Printlnメソッドで改行して出力

それでは1行ずつ開業して出力するにはどうしたらいいでしょうか。

答えは、Printlnメソッドを使います。Printの後ろにlnが付いているので間違えないでください!

実行して確認してみましょう!

Go
func main() {
	  fmt.Println("1行目の文字です")
	  fmt.Print("2行目の文字だよ")
}

1行目の文字です
2行目の文字だよ

というように出力されましたか?出力されていればOKです!

Printlnメソッドでは出力の末尾に改行が追加されるようになっているのです。非常に便利ですね!


フォーマットを指定して出力

fmtパッケージにはPrintメソッド、Printlnメソッド以外にPrintfメソッドが存在します。
このPrintfメソッドは以下のように書かれています。

Printfはフォーマット指定子に従ってフォーマットし、標準出力に書き込む。 書き込まれたバイト数と発生した書き込みエラーが返される。

https://pkg.go.dev/fmt#Printf



基本的な使い方

文字列の出力

基本的な文字列を出力する例を見てみましょう!

Go
package main

import "fmt"

func main() {
    name := "Go言語"
    fmt.Printf("こんにちは、%s!\n", name)
}

上の例では、%sが文字列を挿入するためのプレースホルダーとなっており、name変数の値がその位置に挿入されます。
実行すると出力は以下のようになります。

こんにちは、Go言語!



数値の出力

整数や浮動小数点数も簡単に出力できます。

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 メートル



複数の値の出力

複数の値を同時に出力することもできます。

Go
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指定子を使うと、構造体のフィールド名とその値を出力することができます。
次に、構造体を出力する例を見てみましょう。

Go
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}



フィールド幅と精度の指定

フィールド幅と精度を指定して出力することもできます。

Go
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言語における標準出力機能を提供します。

フォーマット指定子を使って、さまざまなデータ型を柔軟に整形し、見やすく出力することができます。
初心者の方も、この基本的な使い方をマスターすることで、より効果的にデバッグやログの出力を行うことができるようになるかと思います!

参考記事

https://pkg.go.dev/fmt

  • この記事を書いた人
  • 最新記事

kuron

Webやモバイルアプリ開発しているエンジニア。 プログラミングや動画編集、ガジェットなどの雑談系の話もブログにしていきます!

-Go言語, プログラミング
-,