첫 번째 웹 앱을 작성 중이며 다음과 같은 구조를 가지고 있습니다.
.
├── main.go
├── model
│ ├── model.go
│ └── book.go
├── route
│ └── route.go
└── view
└── view.go
/main.go 는 내 main () 이있는 곳입니다. 그 파일에서 나는 또한 내 데이터베이스의 인스턴스를 유지할 변수 Env를 정의했습니다 (적어도 그것이 계획입니다).
에서 /main.go 내가 할
import "project/view"
type Env struct {
db models.Collection
}
// rest of the code
func main() {
db, err := models.NewDB()
// etc
MyEnv := &Env{db}
// etc
}
그러나 문제는 /view/view.go 에서 /model/book.go에 정의 된 메서드를 호출해야 한다는 것입니다. 그리고 그렇게하는 방법은 MyEnv.db 인스턴스를 통하는 것이라고 생각 했지만 물론 오류가 발생합니다.
view / view.go : 13 : 14 : 정의되지 않음 : Env
^^ 그 문제를 해결하는 데 도움을 주시거나 프로젝트를 더 잘 구성하는 방법에 대한 안내를 주시면 감사하겠습니다. :)
다른 패키지의 이름 (변수, 유형 등)을 사용하려면 import
해당 패키지 가 필요 합니다. 예를 들어 메인 패키지에서 import "view"
할 수 view.Something
있습니다.
이제 기본 패키지를 가져올 수 없습니다. 이는 view
패키지가 main
를 호출하기 위해 가져올 수 없음을 의미합니다 main.Env
. 따라서 다른 방법을 사용해야합니다. 가능성은 다음과 같습니다.
패키지에 Env
유형을 넣은 view
다음 main
패키지에서 var myEnv = view.Env{}
.
풋 Env
자신의 패키지를 입력 env
하면 다음 모두 가져 오기 view
및main
구체적인 유형을 사용하는 대신 패키지 Env
의 interface
유형을 사용할 수 있습니다 view
. 이 유형은 필요한 기능 만 노출해야합니다. 그런 다음 main
패키지 에서 해당 유형을 구현하고 해당 인스턴스를 view
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다