如何访问GO中的另一个文件

Ati*_*ain -3 go mux

我正在尝试访问控制器main.go但是我收到以下错误:

./main.go:34:28: cannot refer to unexported name controllers.getUserDetails
./main.go:34:28: undefined: controllers.getUserDetails
Run Code Online (Sandbox Code Playgroud)

这是我的一小段main.go,我删除了一些额外的代码

package main

import (
  "net/http"
  "os"
  "log"
  "github.com/urfave/negroni"
  "github.com/gorilla/mux"
  "github.com/joho/godotenv"
  "Go-Social/controllers"
 )

 func main() {
   router := mux.NewRouter()
   UserRouter := router.PathPrefix("/api/user").Subrouter()
   UserRouter.HandleFunc("", controllers.getUserDetails).Methods("GET")

   env := os.Getenv("GO_ENV")
   if "" == env {
    env = "Development"
   }

   // appending middlewares
   server := negroni.Classic()

   // router handler with negroni
   server.UseHandler(router)

   // starting server
   server.Run(":" + os.Getenv(env + "_PORT"))

 }
Run Code Online (Sandbox Code Playgroud)

我的controller.go档案

package controllers

import (
  "net/http"
  "fmt"
)

func getUserDetails(w http.ResponseWriter, r *http.Request) {
  fmt.Println("here")
  message := "Hello World"
  w.Write([]byte(message))

}
Run Code Online (Sandbox Code Playgroud)

请帮助我是Go的新手.提前致谢.

Cal*_*oki 7

要使用其他包中的函数,需要导出它(GetUserDetails)

如说在这里

可以导出标识符以允许从另一个包访问它

func GetUserDetails(w http.ResponseWriter, r *http.Request) {
  fmt.Println("here")
  message := "Hello World"
  w.Write([]byte(message))
}
Run Code Online (Sandbox Code Playgroud)