为什么 go 不嵌入文件?

Ian*_*nce 5 go

我试图在我的 go 应用程序中嵌入一个文本文件,但我不明白为什么它不起作用。

我有一个与我的 go 程序位于同一目录中的文件hello.txt,但是当我编译并运行下面的代码时,它不会打印任何内容,而它应该打印 hello.txt 的内容。

package main

import (
    _ "embed"
    "fmt"
)

// go:embed hello.txt
var hello string

func main() {
    fmt.Println(hello)
}
Run Code Online (Sandbox Code Playgroud)

我还尝试制作hello一个[]byte甚至使用文件系统并列出所有文件,两者都表明没有嵌入任何内容。

Ian*_*nce 18

//和 之间不能有空格go:embed,否则编译器只会将其视为注释。

嵌入文档没有明确说明这一点,但在go compil 的文档中对此进行了解释

编译器接受注释形式的指令。为了将它们与非指令注释区分开来,指令要求注释开头和指令名称之间没有空格。但是,由于它们是注释,因此不知道指令约定或特定指令的工具可以像任何其他注释一样跳过指令。