我試圖建立一個庫,它將自動將一個struct Type作爲一個RESTful資源。我可以傳入「類型」作爲函數參數嗎?
這裏就是我想象它看起來像在調用代碼:
package main
import (
"fmt"
"github.com/sergiotapia/paprika"
)
type Product struct {
Name string
Quantity int
}
func main() {
// You need to attach a resource by giving Paprika your route,
// the struct type and optionally a custom resource manager.
paprika.Attach("/products", Product, nil)
paprika.Start(1337)
log.Print("Paprika is up and running.")
}
在我的圖書館,我試圖創建附加功能:
package paprika
import (
"fmt"
)
func Attach(route string, resource Type, manager ResourceManager) {
}
func Start(port int) {
}
type ResourceManager interface {
add() error
delete() error
update(id int) error
show(id int) error
list() error
}
如何我可以接受任何「類型」的結構?我的最終目標是使用反射來獲取類型名稱和它的字段(這一部分我已經知道該怎麼做)。
關於如何解決這個問題的任何建議?
我做了類似的地方,我的函數接受'reflect.Type',當我調用它時,它看起來像'attach(reflect.TypeOf(MyStruct {}))''。但是你不能通過接口解決它嗎? –
你可以使用一個'interface {}'然後一個類型開關。 http://golang.org/doc/effective_go.html#type_switch – julienc
@Kbo:事情是我不知道將會有什麼類型。這些應該在運行時檢測到。 – sergserg