我有一个小的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) {
}
答案 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