이동이 비교적 쉽습니다. 확장 가능한 응용 프로그램을위한 디자인 패턴이 있다면 궁금합니다.Golang 자동 확장 응용 프로그램
예를 들어, 내 소스에는 프로그램을위한 다른 응용 프로그램 특정 확장을 배치하는 확장 디렉토리가 있습니다. 현재 각각의 주요 기능을 개별적으로 이름별로로드합니다. 나는 프로그램이 컴파일 될 때 자동으로 내 확장을 포함하게하고 싶습니다.
그냥 명확히 말하면 런타임에 확장을 동적으로로드하려고하지는 않습니다. 이 후, 내가 만들어 줄게 단지 이동과 할 수없는 경우
- 드롭 파일 확장자 폴더에
- 다시 컴파일
: 난 그냥 프로그램에 확장을 추가하는 등 간단하게 만들 싶습니다 만기가되었지만, 나는 이것을하기위한 더 좋은 방법이되어야한다고 생각하고 있습니다.
더 명확 내가 더 간단하게 원하는 것을 보여주기 위해 여기에 내가 지금 무엇의 예입니다main.go
package main
import (
"github.com/go-martini/martini"
"gopath/project/extensions"
)
func main() {
app := martini.Classic()
// Enable Each Extension
app.Router.Group("/example", extensions.Example)
// app.Router.Group("/example2", extensions.Example2)
// ...
app.Run()
}
확장/example.go
package extensions
import (
"github.com/codegangsta/martini-contrib/render"
"github.com/go-martini/martini"
)
func Example(router martini.Router) {
router.Get("", func(r render.Render) {
// respond to query
r.JSON(200, "")
})
}
에 저장되며 모듈 경로의 하위 디렉토리에 패키지를 저장하고 하위 모듈을 main으로 가져옵니다. 그러나 모든 '확장'에 표준 패키지 이름을 추가하고 이름 충돌 등을 처리해야합니다. 악몽 : D – fabrizioM
또 다른 접근법은 Packer처럼 RPC를 사용하는 것입니다. http://www.packer.io/docs /extend/developing-plugins.html – elithrar