こんにちは。Tomoyuki(@tomoyuki65)です。
Go言語(Golang)にはimportすることで使用できる標準パッケージが色々とありますが、その中でもよく使われるものもあります。
そこでこの記事では、Go言語(Golang)でよく使われるパッケージについてまとめます。
Go言語(Golang)でよく使われるパッケージまとめ
基本パッケージ
fmt
書式付きのI/O(入力/出力)を扱うための基本的なパッケージで、コンソール出力やフォーマット指定での文字列生成、そしてエラー情報のラップなど、デバッグからエラー処理まで幅広く利用されます。
・文字列「Hello World !!」を出力する例
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World !!")
}
実行結果
Hello World !!
errors
エラー値を扱うための基本的な機能が利用できます。Goのバージョン1.13以降ではerrors.Isやerrors.Asを使ってエラーの比較や特定の型への変換などによって堅牢なエラーハンドリングが可能です。
・固定メッセージのエラーを生成し、ログ出力する例
package main
import (
"errors"
"fmt"
)
func main() {
// エラー生成
err := errors.New("固定メッセージのエラー")
// ログ出力
fmt.Println(err)
}
実行結果
固定メッセージのエラー
関連記事

log/slog
Goのバージョン1.21で追加された標準ライブラリのロガーで、ログレベル(Info、Warn、Errorなど)を持ちながら構造化ログ(キーと値のペア)を簡単に出力できます。
・情報ログ、警告ログ、エラーログを出力する例
package main
import (
"log/slog"
)
func main() {
slog.Info("情報ログ", "attribute", "追加の補足")
slog.Warn("警告ログ", "attribute", "追加の補足")
slog.Error("エラーログ", "attribute", "追加の補足")
}
実行結果
2009/11/10 23:00:00 INFO 情報ログ attribute=追加の補足
2009/11/10 23:00:00 WARN 警告ログ attribute=追加の補足
2009/11/10 23:00:00 ERROR エラーログ attribute=追加の補足
関連記事


strings
文字列の分割、結合、検索、置換など、文字列を操作するための便利な関数が利用できます。
・文字列を大文字変換してログ出力する例
package main
import (
"fmt"
"strings"
)
func main() {
// 文字列の設定
text := "hello"
// 文字列を大文字変換してログ出力
fmt.Println(strings.ToUpper(text))
}
実行結果
HELLO
関連記事

strconv
文字列型と数値型との相互変換をするために利用できます。特にAPIのレスポンス結果やファイルから読み取った文字列を数値変換する際に使用されます。
package main
import (
"fmt"
"strconv"
)
func main() {
// 文字列で数値を設定
numStr := "123"
// 文字列を数値変換してログ出力
num, err := strconv.Atoi(numStr)
if err != nil {
fmt.Println("変換エラー:", err)
} else {
fmt.Println(num)
}
}
実行結果
123
time
現在時刻の取得、時刻のフォーマット変換、時間計算、タイマー、スリープなど、時間に関するあらゆる操作に利用します。
・現在日時を日本時間でログ出力する例
package main
import (
"fmt"
"time"
)
func main() {
// タイムゾーンを明示的に日本時間に設定
loc, err := time.LoadLocation("Asia/Tokyo")
if err != nil {
fmt.Println("タイムゾーンの設定に失敗しました。")
}
// 現在日時をフォーマット変換してログ出力
now := time.Now().In(loc)
fmt.Println(now.Format("2006-01-02 15:04:05"))
}
実行結果(環境や実行タイミングによります)
2025-11-13 00:07:22
OS・ファイル操作
os
オペレーティングシステムの機能とやり取りするためのインターフェースを提供しています。
・環境変数の値を取得してログ出力する例
package main
import (
"fmt"
"os"
)
func main() {
// 環境変数「PATH」の値を取得
path := os.Getenv("PATH")
// ログ出力
fmt.Println("PATH:", path)
}
実行結果(結果は環境によります)
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
io
I/O処理(データの読み書き)の基本的なインターフェースを提供しています。
・新規のテキストファイルを作成し、ファイルに文字列を書き込む例
package main
import (
"fmt"
"os"
"io"
)
func main() {
// ファイル作成(存在したら上書き)
file, err := os.Create("example.txt")
if err != nil {
fmt.Println("ファイル作成エラー:", err)
}
// ファイルに文字列を書き込む
_, err = io.WriteString(file, "Hello World !!")
if err != nil {
fmt.Println("ファイル書き込みエラー:", err)
}
}
実行結果

※テキストファイル「example.txt」が作成され、ファイルに文字列「Hello World !!」が書き込まれていること。
path/filepath
OSに依存しない形でファイルパスを操作するためのユーティリティを提供しており、パスの結合や分割、ディレクトリの走査などを安全に行えます。
・OSに依存しない形でファイルパスを設定してログ出力する例
package main
import (
"fmt"
"path/filepath"
)
func main() {
// ファイルパスの設定
path := filepath.Join("folder", "subfolder", "file.txt")
// ログ出力
fmt.Println(path)
}
実行結果
folder/subfolder/file.txt
関連記事

Web開発・ネットワーク
net/http
HTTPクライアントとサーバーの実装を提供しています。
・ステータスコードをログ出力する例
package main
import (
"fmt"
"net/http"
)
func main() {
fmt.Println("リクエスト成功のステータスコード:", http.StatusOK)
fmt.Println("不正リクエストのステータスコード:", http.StatusBadRequest)
fmt.Println("サーバーエラーのステータスコード:", http.StatusInternalServerError)
}
実行結果
リクエスト成功のステータスコード: 200
不正リクエストのステータスコード: 400
サーバーエラーのステータスコード: 500
net/url
URLの解析・生成・操作を簡単に行うための機能を提供しています。
・文字列のURLをパースして各値をログ出力する例
package main
import (
"fmt"
"net/url"
)
func main() {
// URLの設定
targetUrl := "https://example.com/hello?lang=ja"
// パース処理
u, err := url.Parse(targetUrl)
if err != nil {
fmt.Println("URLのパースエラー", err)
}
// ログ出力
fmt.Println("Scheme:", u.Scheme)
fmt.Println("Host:", u.Host)
fmt.Println("Path:", u.Path)
// クエリパラメータを取得
query := u.Query()
// クエリパラメータ「lang」をログ出力
fmt.Println("lang:", query.Get("lang"))
}
実行結果
Scheme: https
Host: example.com
Path: /hello
lang: ja
encoding/json
Goのデータ構造(構造体やマップ)とJSON形式のデータとの間で相互変換(エンコード/デコード)を行う機能を提供しています。
・構造体のデータをJSON形式に変換し、それを文字列変換してログ出力する例
package main
import (
"encoding/json"
"fmt"
)
// ユーザーの構造体を定義
type User struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Email string `json:"email"`
}
func main() {
// ユーザーを定義
user := User{
FirstName: "太郎",
LastName: "田中",
Email: "t.tanaka@example.com",
}
// ユーザーをJSON形式のデータに変換
jsonData, err := json.Marshal(user)
if err != nil {
fmt.Println("JSON変換エラー", err)
}
// JSON形式のデータを文字列に変換してログ出力
fmt.Println(string(jsonData))
}
実行結果
{"first_name":"太郎","last_name":"田中","email":"t.tanaka@example.com"}
context
ゴルーチン間でキャンセル信号・タイムアウト・値の伝達を行うためのもので、HTTP サーバーや非同期処理でよく使われます。
・コンテキストを作成してキーバリューを設定し、それを別途取得してログ出力する例
package main
import (
"context"
"fmt"
)
func main() {
// コンテキストを作成
ctx := context.Background()
// コンテキストにキー「RequestId」と値「XXXX-XXXX-XXXX-1234」を設定
ctx = context.WithValue(ctx, "RequestId", "XXXX-XXXX-XXXX-1234")
// コンテキストからRequestIdを取り出してログ出力
if requestID, ok := ctx.Value("RequestId").(string); ok {
fmt.Println("RequestID:", requestID)
} else {
fmt.Println("RequestIDは取得できませんでした。")
}
}
実行結果
RequestID: XXXX-XXXX-XXXX-1234
最後に
今回は、Go言語(Golang)でよく使われるパッケージをまとめました。
importすることで使用できる標準パッケージについて、まず最初に覚えておいた方がいいものをまとめたので、ぜひ参考にしてみて下さい。



コメント