使用 ../ at go:embed 注释
using ../ at go:embed annotation
我想嵌入一个比golang文件代码高一级的文件。
例如:
目录 1
- file.go
目录 2
- file.txt
如何使用 go:embed 将 file.txt 嵌入 file.go?
documentation 状态:
Patterns may not contain ‘.’ or ‘..’ or empty path elements, nor may they begin or end with a slash.
因此不直接支持您尝试执行的操作。更多信息可在 this issue.
的评论中找到
你可以做的一件事是在 dir2
中放入一个 go 文件,在其中嵌入 file.txt
,然后在 dir1/file.go
中嵌入 import/use(假设文件夹是在同一个包中)。
正如@Brits (https://pkg.go.dev/embed)
所述,嵌入包中不支持此功能
我喜欢使用的一种模式是在我项目的 internal
包中创建一个 resources.go 文件,并将我所有的嵌入式资源放入其中,例如:
├── cmd\
│ └── cool.go
└── internal\
└── resources\
├── resources.go
├── fonts\
│ └── coolfont.ttf
└── icons\
└── coolicon.ico
resources.go
import _ "embed"
//go:embed fonts/coolfont.fs
var fonts byte[] // embed single file
//go:embed icons/*
var icons embed.FS // embed whole directory
有些库也可以帮助解决这个问题,例如此处列出的库 https://github.com/avelino/awesome-go#resource-embedding
但我还没有 运行 进入普通旧嵌入不能满足我需求的用例。
我想嵌入一个比golang文件代码高一级的文件。 例如:
目录 1
- file.go
目录 2
- file.txt
如何使用 go:embed 将 file.txt 嵌入 file.go?
documentation 状态:
Patterns may not contain ‘.’ or ‘..’ or empty path elements, nor may they begin or end with a slash.
因此不直接支持您尝试执行的操作。更多信息可在 this issue.
的评论中找到你可以做的一件事是在 dir2
中放入一个 go 文件,在其中嵌入 file.txt
,然后在 dir1/file.go
中嵌入 import/use(假设文件夹是在同一个包中)。
正如@Brits (https://pkg.go.dev/embed)
所述,嵌入包中不支持此功能我喜欢使用的一种模式是在我项目的 internal
包中创建一个 resources.go 文件,并将我所有的嵌入式资源放入其中,例如:
├── cmd\
│ └── cool.go
└── internal\
└── resources\
├── resources.go
├── fonts\
│ └── coolfont.ttf
└── icons\
└── coolicon.ico
resources.go
import _ "embed"
//go:embed fonts/coolfont.fs
var fonts byte[] // embed single file
//go:embed icons/*
var icons embed.FS // embed whole directory
有些库也可以帮助解决这个问题,例如此处列出的库 https://github.com/avelino/awesome-go#resource-embedding
但我还没有 运行 进入普通旧嵌入不能满足我需求的用例。