我一直收到以下错误,并且我还在其他Stack Overflow线程中尝试了其他一些建议。
资料夹结构:
├── 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)
}
}
validate/args.go
package validate
import "strings"
func checkEnv(environment string) bool {
env := strings.ToLower(environment)
return env != "qa" && env != "dev"
}
我的项目在$ GOPATH的src目录中。如果这不是进行代码拆分的正确方法,是否应遵循通常使用的约定?
任何反馈表示赞赏。
最佳答案
这里有两个问题。
checkEnv
方法。也就是说,它仅在同一个包中可用,而在其他包中不可用。要导出,只需将方法CheckEnv
的首字母大写。现在可以从其他软件包CheckEnv
packagename.ExportedMethod(params...)
。所以在您的代码[main.go]中,应该为result := validate.CheckEnv(c.Args().Get(0))