deepwzh的技术笔记
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • Golang
  • 工具
  • 最佳实践
  • 学习资料
  • 代码生成
  • 安装与配置

    • 安装与配置
    • GVM
    • 私有仓库拉取
    • 安装与配置
  • 库

    • 库
    • Grpc-go
    • 命令行参数
    • 依赖注入库 wire
  • 编译器

    • 编译器
    • clean
    • 逃逸分析
    • 编译过程
    • 构建选项
    • 编译优化

      • 编译优化
      • PGO
  • 语言

    • 语言
    • defer
    • go:embed
  • 微服务框架

    • 微服务框架
    • Kratos

      • Kratos
      • 集成三方 web 框架
      • 项目结构体系

go:embed

嵌入 go:embed

以下是几个使用 go:embed 指令的例子:

  1. 嵌入一个文本文件:
package main

import _ "embed"

//go:embed hello.txt
var hello string

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

这个程序会将 hello.txt 文件的内容嵌入到程序中。在运行时,可以直接通过变量 hello 访问文件内容,无需从磁盘中读取。

  1. 嵌入一个目录中的所有文件:
package main

import _ "embed"

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

func main() {
    files, err := staticFS.ReadDir("static")
    if err != nil {
        log.Fatal(err)
    }
    for _, file := range files {
        fmt.Println(file.Name())
    }
}

这个程序会将 static 目录中的所有文件嵌入到程序中,并将它们作为一个文件系统(embed.FS)使用。在运行时,可以通过 embed.FS 的方法访问目录中的所有文件。

  1. 嵌入多个文件:
package main

import _ "embed"

//go:embed foo.txt bar.txt
var files embed.FS

func main() {
    foo, err := files.ReadFile("foo.txt")
    if err != nil {
        log.Fatal(err)
    }
    bar, err := files.ReadFile("bar.txt")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(foo))
    fmt.Println(string(bar))
}

这个程序会将 foo.txt 和 bar.txt 两个文件嵌入到程序中,并将它们作为一个文件系统(embed.FS)使用。在运行时,可以通过 embed.FS 的方法访问这两个文件的内容。

Prev
defer