Golang - 双下划线形式的包名

在我的 protobuf 生成的代码中,包是:

package __

什么意思double underscore,是不是和文件夹名一样?

有没有这方面的文件,我搜索了但没有找到。并且代码可以无错编译。


桃花长相依
浏览 151回答 2
2回答

喵喵时光机

是的,这意味着相同的目录。让我们看看下面的代码。目录结构.├── go.mod├── greet│   └── greet.go└── main.go内容在greet.gopackage __import "fmt"func Hello(name string) {    fmt.Printf("Hello %s\n", name)}内容在main.gopackage mainimport greet "playground/greet"func main() {    greet.Hello("Eric")}当前目录$ pwd/Users/thedatageek/Codes/go-playground不幸的是,我也找不到任何文档。不过好像是个好东西。您真的不需要为包命名。您只需命名目录,包名称将自动相同。注意:这绝对不是grpcorprotobuf东西。然而,如果您已经从原型文件生成了原型存根,并且如果您添加了一些额外的实用程序文件,您可以将它们放入一个目录中,然后通过目录名直接导入它,这是一种习惯。例如下面的 github reposhttps://github.com/Ash110/gRPC-Logger https://github.com/dist1ll/cache-prototype https://github.com/kamensotirov99/int-gateway https://github.com/rachaelyychen/go-gee https://github.com/suvvm/ToadOCREngine https://github.com/denyami/drawing-api

SMILET

我发现了什么package __ (双下划线):导入此类包时,必须指定别名,不能省略,否则找不到包。导入时,编辑器(如goland)无法自动搜索,必须手动导入。所以,我猜__是指no nameor no default name。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go