我一直收到以下错误,并且我一直在尝试其他 Stack Overflow 线程中的一些其他建议。
./main.go:15:13: undefined: checkEnv
文件夹结构:
├── README.md
├── main.go
└── validate
└── args.go
$GO路径
/Users/myusername/go
主.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 目录中。如果这不是进行代码拆分的正确方法,是否有可遵循的通用约定?
感谢任何反馈。
最佳答案
这里有两个问题。
checkEnv
方法未导出 [在 validate/args.go 中]。也就是说,它只能在同一个包内使用,不能在其他包内使用
要导出,只需将方法CheckEnv
的第一个字母大写。现在可以从其他包中使用CheckEnv
调用其他包的方法时,语法为
packagename.ExportedMethod(params...)
。
所以在你的代码 [in main.go] 中它应该是result := validate.CheckEnv(c.Args().Get(0))
关于go - 在另一个文件夹中导入本地包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50382851/