在另一个文件夹

时间:2018-05-17 03:19:29

标签: go

我一直收到以下错误,并且我一直在尝试其他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目录中。如果这不是进行代码分割的正确方法,是否有一个通常使用的约定?

任何反馈意见。

1 个答案:

答案 0 :(得分:3)

这里有两个问题。

  1. 未导出checkEnv方法[在validate / args.go中]。即它只能在同一个包中使用而不能在其他包中使用
    要导出只是大写方法CheckEnv的第一个字母。现在可以从其他包中使用CheckEnv

  2. 从其他包调用方法时,语法应为packagename.ExportedMethod(params...)
    因此,在您的代码[main.go]中,它应该是result := validate.CheckEnv(c.Args().Get(0))