如何在 Go 中使用与包同名的变量名?
文件或目录的常见变量名称是“path”。不幸的是,这也是 Go 中包的名称。此外,在 DoIt 中更改路径作为参数名称,如何编译此代码?
package main
import (
"path"
"os"
)
func main() {
DoIt("file.txt")
}
func DoIt(path string) {
path.Join(os.TempDir(), path)
}
我得到的错误是:
$6g pathvar.go
pathvar.go:4: imported and not used: path
pathvar.go:13: path.Join undefined (type string has no field or method Join)
A common variable name for files or directories is "path". Unfortunately that is also the name of a package in Go. Besides, changing path as a argument name in DoIt, how do I get this code to compile?
package main
import (
"path"
"os"
)
func main() {
DoIt("file.txt")
}
func DoIt(path string) {
path.Join(os.TempDir(), path)
}
The error I get is:
$6g pathvar.go
pathvar.go:4: imported and not used: path
pathvar.go:13: path.Join undefined (type string has no field or method Join)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
路径字符串
正在隐藏导入的路径
。您可以做的是将导入包的别名设置为例如pathpkg,方法是将import
中的行“path”
更改为pathpkg“path”
,这样代码的开头是这样的当然,然后您必须将
DoIt
代码更改为:The
path string
is shadowing the importedpath
. What you can do is set imported package's alias to e.g. pathpkg by changing the line"path"
inimport
intopathpkg "path"
, so the start of your code goes like thisOf course then you have to change the
DoIt
code into: