我在构建go项目时遇到了一个奇怪的错误。
我的结构:
-$GOPATH
-src
-main
-main.go
-configuration
-configuration.go
configuration.go:
package configuration;
type Config int;
func (c Config) Parse(s string) map[string]string {...}
main.go
package main;
import"configuration"
func main() {
var config Config;
argMap := config.parse(...);
return;
}
如果我的工作目录是$GOPATH
,我会这样做:
go build configuration - no output, OK
go build main
imported and not used "configuration"
undefined: Config
所以找到了我的包($GOPATH/pkg
包含configuration.go
正确的内容 - 我可以看到Parse
方法)和main
导入它,但不识别其内容?
我重新解决的问题是Config
类型未导出?为什么会这样?
答案 0 :(得分:2)
您正在尝试使用未定义的包Config
中的main
,而不是来自configuration
的{{1}}(即错误"导入和未使用&# 34):
package main
import "configuration"
func main() {
var config configuration.Config
argMap := config.Parse(...)
}
第二个问题是按照VonC的说明调用未导出的parse
而不是Parse
。
答案 1 :(得分:0)
argMap := config.parse(...);
无法使用,因为您声明了Parse()
方法
(如"导出方法configuration.Parse()
")
var config configuration.Config
argMap := config.Parse(...);
导出 Config
,但这些方法区分大小写(参见Exported Identifiers)。