Golang使用go mod编译时如何在可执行文件中包含所有目录和文件

Golang使用go mod编译时如何在可执行文件中包含所有目录和文件 你好,如果我使用 go mod 编译我的项目,它会创建一个包含我所有目录(文件夹和其他文件)的可执行文件吗?

1 回复

更多关于Golang使用go mod编译时如何在可执行文件中包含所有目录和文件的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


使用 go mod 编译时,默认情况下生成的可执行文件只会包含编译后的二进制代码,不会将项目目录结构或其他非.go文件打包进可执行文件中。如果你需要将静态资源(如配置文件、模板文件等)嵌入到可执行文件中,可以使用 embed 包(Go 1.16+)或第三方工具如 packrgo-bindata

以下是使用 embed 包的示例:

package main

import (
    "embed"
    "fmt"
    "io/fs"
    "log"
)

// 嵌入当前目录下的所有文件(递归)
//go:embed *
var embeddedFiles embed.FS

func main() {
    // 遍历嵌入的文件
    err := fs.WalkDir(embeddedFiles, ".", func(path string, d fs.DirEntry, err error) error {
        if err != nil {
            return err
        }
        fmt.Println(path)
        return nil
    })
    if err != nil {
        log.Fatal(err)
    }
}

编译命令:

go build -o myapp

这样,myapp 可执行文件就会包含当前目录下的所有文件。注意 embed 指令不支持父目录(如 ../)或绝对路径。

回到顶部