如何解决包含连字符的软件包名称
我在理解为什么在包装中带有连字符时为什么我的代码抱怨时遇到了麻烦。 例如如果我有一个软件包名称foo-bar并且声明了该软件包名称
package foo-bar
foo-bar/config.go:1:13: expected ';',found '-'
那么,为什么Go编译器会抱怨?这是否意味着我们不应该在go包名称中使用连字符?
由于许多回购软件包名称中都使用连字符,所以我做错了吗?
解决方法
在Go程序中,其他语言的典型名称样式可能不是惯用的。以下是两个名称示例,它们在其他语言中可能是不错的样式,但不适用于Go:
- computeServiceClient
- priority_queue
如果您的包裹地址的名称中包含-
,则可以用下划线设置包裹名称。
示例:
打包文件地址:some / where / foo-bar / config.go
package foo_bar
// your codes
,
我们可以看到from the Go spec软件包名称必须是有效的标识符:
PackageName =标识符。
我们可以进一步read将有效标识符定义为:
标识符=字母{字母| unicode_digit}。
因此,程序包名称只能包含字母和数字。不允许使用-
个字符。
我们可以further read,作为一种特殊情况,下划线字符(_
)被定义为字母,以用于Go标识符:
下划线字符_(U + 005F)被认为是字母。
因此,您可以根据需要用-
替换_
作为包名称。
但是,请考虑不这样做,因为它被认为是非惯用语。有关在Go中进行包命名的建议,请阅读Effective Go上package names的部分,或阅读Package Names上The Go Blog的帖子。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。