目录中的所有Go源文件x都x在顶部声明了包名.我知道这不是强制性的,否则会使事情变得不必要地复杂化.那么为什么go编译器不会从目录名中推断出包名?
这存在于几乎许多其他语言中,如Java或C#,您必须在编译时声明可以轻松计算的内容.
理由是什么?
没有package你将无法区分主程序和库.
此外,根据语言规范,该语言不要求包与目录相同:
实现可能要求包的所有源文件都位于同一目录中.
实际上,某些包的名称与其导入路径不同:
如果省略PackageName,则默认为导入包的package子句中指定的标识符.
考虑github.com/google/go-gcm,其中包含package gcm文件.使用此库的项目将具有:
import "github.com/google/go-gcm"
Run Code Online (Sandbox Code Playgroud)
然后调用这样的事情:
res, err := gcm.SendHttp(APIKey, notification)
Run Code Online (Sandbox Code Playgroud)
这种情况特别常见,-因为您无法在标识符中使用它.
| 归档时间: |
|
| 查看次数: |
884 次 |
| 最近记录: |