跳到主要内容

embed 包在 Go 使用场景

· 阅读需 1 分钟
素明诚
Full stack development

单页应用(SPA)

单页应用通常由 HTML、CSS 和 JavaScript 构成,这些静态文件可以被嵌入到 Go 服务器中,实现完全的后端前端集成。

import (
"embed"
"net/http"
)

//go:embed dist/*
var staticFiles embed.FS

func main() {
http.Handle("/", http.FileServer(http.FS(staticFiles)))
http.ListenAndServe(":8080", nil)
}

命令行工具的配置文件和资源

对于命令行工具,配置文件、模板或其他资源可以被嵌入到二进制文件中,简化用户的配置过程,用户无需手动设置或修改配置文件。

import (
"embed"
"log"
)

//go:embed config/default.yaml
var defaultConfig embed.FS

func loadConfig() {
data, err := defaultConfig.ReadFile("config/default.yaml")
if err != nil {
log.Fatalf("Error loading config: %v", err)
}
// 解析配置文件
parseConfig(data)
}

桌面应用的资源和多媒体内容

在桌面应用中,如图标、图像、音频和视频文件可以被嵌入到应用中,确保应用运行时所有资源都可用。

import "embed"

//go:embed assets/icons/*
var icons embed.FS

//go:embed assets/sounds/notification.wav
var soundNotification embed.FS