Go文件名以下划线字符开头

我希望特定文件显示在编辑器中文件列表的顶部,所以我给它加了前缀_。看起来是这样的:


mypkg

  _func.go

  a.go

  b.go

我知道围棋的文件中使用的命名约定_test,_unix等等,但是,因为_func不符合特定架构或者是一个测试的情况下,为什么不指望他的源文件?


当我导入此程序包时,此文件中定义的功能不可用。


慕斯王
浏览 422回答 2
2回答

海绵宝宝撒

显然,下划线的权重与文件开头的点前缀相同,并且被go build命令明确忽略。但是,这不是go工具的决定,而是go/build标准库中的软件包的决定。您可以在此处查看负责的行。我的猜测是临时文件带有下划线前缀,因此构建工具链会忽略它们。编辑:此注释记录了行为。我引用:// Import returns details about the Go package named by the import path,// interpreting local import paths relative to the srcDir directory.// If the path is a local import path naming a package that can be imported// using a standard import path, the returned package will set p.ImportPath// to that path.//// In the directory containing the package, .go, .c, .h, and .s files are// considered part of the package except for:////      - .go files in package documentation//      - files starting with _ or . (likely editor temporary files)//      - files with build constraints not satisfied by the context//// If an error occurs, Import returns a non-nil error and a non-nil// *Package containing partial information.//您可以在package的包文档中go/build以用户友好的形式找到它。

慕莱坞森

我想我记得_whatevergo 工具以类似的方式处理 dotfiles ( .whatever)如何隐藏在 shell 中。不幸的是,我找不到任何记载它的地方的参考。因此,如果我的内存正确地为我提供服务,那么在您打算将源文件视为_file.go某些软件包的一部分的情况下,您将不得不重命名源文件,因为它与Go构建系统不兼容。此行为的目的可能是允许轻松地为CGO等工具创建临时且无冲突的文件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go