Goでembedを利用してファイルを取得する方法を学ぼう

Goでembedを利用してファイルを取得する方法を学ぼう

2025年4月16日

Goではファイルを取得する方法はさまざまあります。

os.ReadFile()を使用してファイルを読み込む方法もあれば、embedパッケージを使用してファイルを取り込む方法もあります。

用途は少し異なりますが、embedパッケージを使用するとビルド時にファイルを含めることができるため、配布時に非常に便利です。

簡単な例として、次のようなtxtファイルを作成してみましょう。

hello.txt
Hello, World!

それでは、embedパッケージを使用してこのファイルを取り込んでみましょう。

main.go
package main

import (
    "fmt"
    _ "embed"
)

//go:embed hello.txt
var content string

func main() {
    fmt.Println(content)
}

上記のコードを実行すると、次のような結果が得られます。

Hello, World!

これは単にtxtファイルだけでなく、htmlcssjsyamlなど、事実上すべてのファイルを取り込んで読み込むことができるということです。

ただし、サイズが非常に大きなファイルを取り込むとメモリ消費が増大するため、注意が必要です。