GO · 파일/IO
embed 심화
//go:embed로 파일을 바이너리에 포함합니다. 정적 자산, 마이그레이션 SQL, 템플릿 등에 활용합니다.
파일/IO중급embedstaticfsbinary
핵심 설명
//go:embed로 파일을 바이너리에 포함합니다. 정적 자산, 마이그레이션 SQL, 템플릿 등에 활용합니다.
Go code
package main
import (
"embed"
"fmt"
"io/fs"
)
// 단일 파일 임베딩
//go:embed go.mod
var modFile string
// 여러 파일 임베딩
//go:embed data/*.sql
var sqlFiles embed.FS
// 전체 디렉토리
//go:embed static
var staticFS embed.FS
func main() {
// 문자열로 직접 사용
fmt.Println("go.mod 내용:")
fmt.Println(modFile)
// embed.FS로 파일 시스템 접근
entries, _ := fs.ReadDir(sqlFiles, "data")
for _, e := range entries {
fmt.Println("SQL 파일:", e.Name())
content, _ := sqlFiles.ReadFile("data/" + e.Name())
fmt.Println(string(content))
}
// http.FS와 연동
// http.Handle("/static/",
// http.StripPrefix("/static/",
// http.FileServer(http.FS(staticFS))))
fmt.Println("embed.FS는 io/fs.FS 인터페이스를 구현합니다")
}학습 팁
embed.FS는 io/fs.FS를 구현하므로 http.FS(), template.ParseFS() 등과 바로 연동됩니다.
주의할 점
//go:embed 디렉티브와 변수 선언 사이에 빈 줄이 있으면 동작하지 않습니다. 바로 다음 줄에 var를 선언하세요.
자주 묻는 질문
embed 심화란 무엇인가요?
//go:embed 로 파일을 바이너리에 포함합니다. 정적 자산, 마이그레이션 SQL, 템플릿 등에 활용합니다.
embed 심화 학습 시 주의할 점은 무엇인가요?
//go:embed 디렉티브와 변수 선언 사이에 빈 줄이 있으면 동작하지 않습니다. 바로 다음 줄에 var 를 선언하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.