找到包但内容不是?

时间:2014-11-16 10:47:48

标签: go

我在构建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类型未导出?为什么会这样?

2 个答案:

答案 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)。