卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章34960本站已运行393

Golang - 包名称为双下划线

golang - 包名称为双下划线

在Golang编程中,包名是一个非常重要的概念。包名的规范是使用小写字母,并且不包含特殊字符和空格。然而,有一个特殊的情况是包名称为双下划线。这是因为在Golang中,包名为双下划线的包具有特殊的含义。它表示一个空包,用于声明变量或执行一些特殊的初始化操作。这个特性在一些特定的场景下非常有用,尤其是在开发一些工具或框架时。所以,如果你在Golang中看到包名称为双下划线的情况,不要感到困惑,它是一种合法且有特殊含义的包名。

问题内容

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

package __

双下划线是什么意思,和文件夹名意思一样吗?

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

解决方法

是的,这意味着同一目录。让我们看一下下面的代码。

目录结构

.
├── go.mod
├── greet
│   └── greet.go
└── main.go

greet.go中的内容

package __

import "fmt"

func hello(name string) {
    fmt.printf("hello %sn", name)
}

main.go中的内容

package main

import greet "playground/greet"

func main() {
    greet.hello("eric")
}

当前目录

$ pwd
/Users/thedatageek/Codes/go-playground

不幸的是,我也找不到任何 go 文档。

不过,这似乎是件好事。您确实不需要为包命名。您只需命名目录,包名称就会自动相同。

注意:这绝对不是 grpcprotobuf 的东西。然而,习惯上,如果您从原始文件生成了原始存根,并且添加了一些附加实用程序文件,则可以将它们放入目录中,然后通过目录名称直接导入它。例如以下 github 存储库

https://www.php.cn/link/570badcfe14697bf2a244e2e25b93e59 https://www.php.cn/link/11b01bd09f8d22fecc14d3418f83caab https://www.php.cn/link/8cee1a0fe765af425dc6f0b6169a6c07 https://www.php.cn/link/8230bea7d54bcdf99cdfe85cb07313d5 https://www.php.cn/link/05f03bcccda955d1689b36046a6db899 https://www.php.cn/link/3a93a609b97ec0ab0ff5539eb79ef33a

卓越飞翔博客
上一篇: 如何使用 Golang 和 supabase 在 Postgres 数据库上链接多个过滤器?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏