我一直收到以下错误,并且我一直在尝试其他Stack Overflow线程中的其他一些建议。
./ main.go:15:13:undefined:checkEnv
文件夹结构:
├── README.md
├── main.go
└── validate
└── args.go
$ GOPATH
/Users/myusername/go
main.go
package main
import (
"fmt"
"log"
"os"
"projectName/validate"
"gopkg.in/urfave/cli.v1"
)
func main() {
app := cli.NewApp()
app.Name = "thirsty"
app.Action = func(c *cli.Context) error {
result := checkEnv(c.Args().Get(0))
fmt.Println(result)
return nil
}
err := app.Run(os.Args)
if err != nil {
log.Fatal(err)
}
}
验证/ args.go
package validate
import "strings"
func checkEnv(environment string) bool {
env := strings.ToLower(environment)
return env != "qa" && env != "dev"
}
我的项目位于我的$ GOPATH的src目录中。如果这不是进行代码分割的正确方法,是否有一个通常使用的约定?
任何反馈意见。
答案 0 :(得分:3)
这里有两个问题。
未导出checkEnv
方法[在validate / args.go中]。即它只能在同一个包中使用而不能在其他包中使用
要导出只是大写方法CheckEnv
的第一个字母。现在可以从其他包中使用CheckEnv
从其他包调用方法时,语法应为packagename.ExportedMethod(params...)
。
因此,在您的代码[main.go]中,它应该是result := validate.CheckEnv(c.Args().Get(0))