Поскольку функция getUserDetails находится в другом пакете, к ней нельзя получить доступ.Доступны только функции, начинающиеся с заглавной буквы.Вот как работает инкапсуляция в Go.
func GetUserDetails(w http.ResponseWriter, r *http.Request) {
fmt.Println("here")
message := "Hello World"
w.Write([]byte(message))
}
Итак, в вашем основном:
UserRouter.HandleFunc("", controllers.GetUserDetails).Methods("GET")
В языке, подобном Java, enCAPSulation в ООП на основе классов достигается через закрытые и открытые переменные / методы класса.,В Go инкапсуляция достигается на уровне пакета.
Другими словами, в Go, начиная с заглавной буквы для любого объекта пакета (типа, переменной или функции), вы сможете получить к нему доступ из другого пакета.