导出的方法在同一个包中不可用

时间:2015-01-09 19:25:24

标签: go

我有一个小的go lang项目,在main.go文件中有一些处理程序,它们引用session.go文件中与会话相关的方法。两者都在文件顶部有package main。 session.go文件中的函数都以大写字母开头(即它们是公共/导出方法)。然而,当我运行main.go文件时,它表示位于session.go并且从main.go调用的方法是undefined。为什么,如何解决它。

我正在运行像go run main.go

这样的项目

main.go

func logout(w http.ResponseWriter, r *http.Request) {
ClearSession(w, r)
 ....
}

session.go

func ClearSession(w http.ResponseWriter, r *http.Request) {

}

1 个答案:

答案 0 :(得分:1)

正如@ptd所说,该命令需要所有名为的文件。

我更喜欢使用另一个包:

/ main.go
  |_session/
    |_session.go
    |_validations.go
    |_errors.go

因此,您可以组织代码并简化命名文件。

e.g:

档案:main.go

package main
import "session"

func main() {
  var validator session.Validator
  var session session.Session
  ...
  if session.IsValid() == false {
     // return session.InvalidSession
     fmt.Printf("ERROR: %v", session.InvalidSession)
  }
}

档案:errors.go

import "errors"

var (
   InvalidSession = errors.New("[Your error message]"
)

然后你可以使用:

go run main.go