沙滩星空的博客沙滩星空的博客

Go语言使用embed包将静态资源嵌入到程序中

目的

Golang编译程序默认是静态编译,会把相关的库都打包到一起,这在分发部署使用时非常方便。不过如果项目中用到的外部的静态资源文件,通常就需要将这些资源和程序一起拷贝分发了。现在可以使用标准库中 embedhttps://pkg.go.dev/embed 将静态资源文件打包到一起

演示

将文件变成 string, []byte

package main

import (
    _ "embed"
    "fmt"
)

// 下面一行像是注释的的内容是一条指令
// 它会将后面指定的文件的内容赋值给下面紧挨着声明的变量

//go:embed file1.txt
var s string

//go:embed subdir/file2.txt
var b []byte

func main() {
    fmt.Println(s)
    fmt.Println(string(b))
}

将文件变成 FS

package main

import (
    "embed"
    "fmt"
)

// 下面是embed最好用的功能,把文件放到FS中

//go:embed file1.txt
//go:embed subdir/file2.txt
var f embed.FS

func main() {
    data, _ := f.ReadFile("file1.txt")
    fmt.Println(string(data))
    data, _ = f.ReadFile("subdir/file2.txt")
    fmt.Println(string(data))
}

// 嵌入整个目录
//go:embed static/*
var staticFS embed.FS

Golang笔记:使用embed包将静态资源嵌入到程序中 https://blog.csdn.net/Naisu_kun/article/details/130722873

未经允许不得转载:沙滩星空的博客 » Go语言使用embed包将静态资源嵌入到程序中

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址