导出的方法在同一个包中不可用
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
我有一个小的 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