I get a strange error while building my go project.
My structure:
-$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;
}
if my working directory is $GOPATH
, I do:
go build configuration - no output, OK
go build main
imported and not used "configuration"
undefined: Config
So my package is found ($GOPATH/pkg
contains configuration.go
with correct content - I can see the Parse
method) and main
imports it, but does not recognize its contents?
I recon the problem is that the type Config
is not exported? Why would that be?
argMap := config.parse(...);
wouldn't work, since you declared a Parse()
method.
(as in "exported method configuration.Parse()
")
var config configuration.Config
argMap := config.Parse(...);
Config
is exported, but the methods are case-sensitive (cf. Exported Identifiers).
You are trying to use Config
from package main
, where it is not defined, instead of the one from configuration
(thats the error "imported and not used"):
package main
import "configuration"
func main() {
var config configuration.Config
argMap := config.Parse(...)
}
The second problem is calling unexported parse
instead of Parse
as explained by VonC.