2015-01-09 7 views
-2

У меня есть небольшой проект 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) { 

} 
+1

Вам нужно запустить 'go run main.go session.go'. Команде 'go run' нужны все имена файлов. – ptd

+0

ОК, спасибо, я на самом деле запустил сборку и получил ее на работу. Думаю, ваш ответ - это решение, если вы не строите. Если вы напишете ответ, я соглашусь. – BrainLikeADullPencil

ответ

1

Как сказал @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 
Смежные вопросы