Golang使用embed引入静态文件的实例代码

来自:网络
时间:2024-08-28
阅读:

Go 语言从 1.16 版本开始引入了一个新的标准库 embed,可以在二进制文件中引入静态文件

指令:/go:embed

通过一个简单的小实例,来演示将静态文件引入到golang的二进制打包产物中

项目结构

$ tree
.
├── main.go
└── static
    └── hello.txt

hello.txt 文件内容

Hello World!

main.go

1、引入静态文件的内容到变量

package main

import (
    "embed"
    "fmt"
)

// 引入静态文件的内容到变量content
//go:embed static/hello.txt
var content string

// 注意需要这个语句,虽然没有用到,可以引入整个目录的文件
//go:embed static/*
var tmplFS embed.FS

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

输出

Hello World!

2、引入整个目录内所有文件

package main

import (
    "embed"
    "fmt"
)

//go:embed static/*
var tmplFS embed.FS

func main() {
    // 读取文件内容
    content, _ := tmplFS.ReadFile("static/hello.txt")

    fmt.Println(string(content))
    // Hello World!
}

将打包产物拷贝到其他任意目录运行,也可以读取到静态文件内容

# 编译
$ go build main.go

# 拷贝到其他任意目录运行
./main
Hello World!

需要注意:

  • 要引入包embed
  • //go:embed 是一个整体,双斜杆后面不能有空格,例如:// go:embed是无效的

扩展:前后端分离的项目中,可以通过该方式,将前端的打包产物内嵌到golang的二进制打包产物中,一起发布

返回顶部
顶部