Go语言使用go:embed嵌入文件无内容输出是什么原因?
Go embed 嵌入文件无输出问题解决
首要排查点:嵌入指令注释格式错误
你代码中的// go:embed hello.txt写法不符合要求,//和go:embed之间不能存在空格,否则编译器会将该行识别为普通注释,不会触发文件嵌入逻辑,最终变量会保留对应类型的零值(string类型为空字符串,[]byte为空切片)。
正确的注释写法为//go:embed hello.txt。
其他可能的排查项
- 确认你的Go版本 >= 1.16,embed是Go 1.16版本才正式引入的标准库功能,低版本无法识别该指令
- 确认
hello.txt和当前写embed指令的.go源码文件存放在同一目录下,注意是和源码文件同级,不是和编译后的二进制文件同级 - embed指令只能修饰包级别的全局变量,不能用在函数内部的局部变量上
修正后的完整代码
package main import ( _ "embed" "fmt" ) //go:embed hello.txt var hello string func main() { fmt.Println(hello) }
内容的提问来源于stack exchange,提问作者ecnepsnai
相关产品推荐
相关产品推荐

