使用./ at go:嵌入注释



我想嵌入一个位于golang文件代码之上一层的文件。例如:

dir1

  • file.go

dir2

  • file.txt

如何在文件中嵌入file.txt。Go使用Go:embed?

文档说明:

模式不能包含'。'或'…'或空路径元素,也不能以斜杠开始或结束。

所以你要做的是不直接支持的。关于这个问题的更多信息可以在评论中找到。

你可以做的一件事是在dir2中放入一个go文件,在其中嵌入file.txt,然后在dir1/file.go中导入/使用它(假设文件夹在同一个包中)。

@Brits (https://pkg.go.dev/embed)在嵌入包中不支持

我喜欢使用的一个模式是创建一个资源。go文件在我的项目的internal包,并把我所有嵌入的资源在那里,例如:
├── 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

但是我还没有遇到过这样的用例:普通的老式嵌入不足以满足我的需求。

最新更新