在我的 protobuf 生成的 go 代码中,包是:
package __
双下划线
是什么意思,和文件夹名一样吗?
有这方面的文档吗,我搜索了但没有找到。并且代码可以无错编译。
最佳答案
是的,这意味着相同的目录。让我们看看下面的代码。
目录结构
.
├── go.mod
├── greet
│ └── greet.go
└── main.go
greet.go
中的内容
package __
import "fmt"
func Hello(name string) {
fmt.Printf("Hello %s\n", name)
}
main.go
中的内容
package main
import greet "playground/greet"
func main() {
greet.Hello("Eric")
}
当前目录
$ pwd
/Users/thedatageek/Codes/go-playground
不幸的是,我也找不到任何 go 文档。
不过好像还挺不错的。您真的不需要为包命名。您只需命名目录,包名称将自动相同。
注意:这绝对不是grpc
或protobuf
的事情。然而,如果您已经从原型(prototype)文件生成了原型(prototype) stub ,并且如果您添加了一些额外的实用程序文件,您可以将它们放入一个目录中,然后通过目录名直接导入它,这是一种习惯。例如下面的 github repos
https://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
关于Golang - 双下划线形式的包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74579996/