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

exported methods not available in same package

我有一个小的 go lang 项目,在 main.go 文件中有一些处理程序引用 session.go 文件中的会话相关方法。两者的文件顶部都有 package main。 session.go 文件中的函数都以大写字母开头(即它们是 public/exported 方法)。然而,当我 运行 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) {

}

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

我更喜欢使用另一个包:

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

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

例如:

文件: 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