文件或目录的常见变量名称是“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)
答案 0 :(得分:10)
path string
正在隐藏导入的path
。您可以做的是将导入包的别名设置为例如pathpkg将"path"
中的行import
更改为pathpkg "path"
,因此代码的开头就是这样的
package main
import (
pathpkg "path"
"os"
)
当然,您必须将DoIt
代码更改为:
pathpkg.Join(os.TempDir(), path)
答案 1 :(得分:1)
package main
import (
"path"
"os"
)
func main() {
DoIt("file.txt")
}
// Just don't introduce a same named thing in the scope
// where you need to use the package qualifier.
func DoIt(pth string) {
path.Join(os.TempDir(), pth)
}