やりたいこと
Goで静的ファイルを埋め込む方法です。
前提条件
Go 1.11.1で確認しています。
概要
statikを使います。 他にもいろいろあったみたいですが、現在活発にメンテナンスされているのはこれくらいのようです。
手順
埋め込み
以下のようにコマンドを実行します。
すると、 statik/statik.go
というファイルが作られます。
このファイルを見ると、データが埋め込まれているようです。
- -f: 強制的に上書き
statik -src ソースディレクトリ -f
利用
以下のようにします(抜粋なのでそのままでは動きません)
つまづいた点としては、 fileSystem.Open
の引数は /
から始まることです。
ファイルシステムなので、まあ当然かもしれませんが。
import (
_ "./statik"
"github.com/rakyll/statik/fs"
)
func foo() {
// ファイルシステム読み込み
fileSystem, err := fs.New()
if err != nil {
// エラー処理
}
// ファイルオープン
f, err := fileSystem.Open("/index.json")
if err != nil {
// エラー処理
}
defer f.Close()
}