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

Go 导出的方法在同一个包中不可用,go,Go,我有一个小的go lang项目,它在main.go文件中有几个处理程序,它们引用session.go文件中与会话相关的方法。两者都在文件顶部有package main。session.go文件中的函数都以大写字母开头(即它们是public/exported方法)。然而,当我运行main.go文件时,它指出位于session.go中的方法和从main.go调用的方法是未定义的。为什么会这样,如何修复它 我正在运行项目,就像go run main.go 梅因,加油 func logout(w htt

我有一个小的go lang项目,它在main.go文件中有几个处理程序,它们引用session.go文件中与会话相关的方法。两者都在文件顶部有
package main
。session.go文件中的函数都以大写字母开头(即它们是public/exported方法)。然而,当我运行
main.go
文件时,它指出位于
session.go
中的方法和从
main.go
调用的方法是
未定义的。为什么会这样,如何修复它

我正在运行项目,就像
go run 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
因此,您可以组织代码并简化命名文件

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

您必须运行
go运行main.go session.go
go-run
命令需要所有名为的文件。好的,谢谢,我实际上运行了go-build并使其工作。我想你的答案是解决方案,如果你不建立。如果你写答案,我会接受。