申し訳ありませんが、この質問は少し基本的です。 私はGolangインターフェイスを使ってCRUDの実装をより動的にしようとしています。モデルcategory Category
多数で使用することができる実装したメソッドからインターフェイスを返す方法は?
type Datastore interface {
AllQuery() ([]interface{}, error)
ReadQuery() ([]interface{}, error)
UpdateQuery() ([]interface{}, error)
CreateQuery() ([]interface{}, error)
DestroyQuery() ([]interface{}, error)//Im not sure if the return value implementation is correct
}
を次のように それはアプリでモデルを表す構造体を示す方法を実装し、.etc tag Tag
のインターフェースを実装しています。ここ
が簡略化されたハンドラ/コントローラ FUNCのUpdateHandlerある(C handler.context)エラー{ P:=新しい(models.Post) 戻り更新(P、C) }
これは関数であります
func Update(data Datastore,c handler.context) error{
if err := c.Bind(data); err != nil {
log.Error(err)
}
d, err := data.UpdateQuery()
//stuff(err checking .etc)
return c.JSON(fasthttp.StatusOK, d)///the returned value is used here
}
インタフェースを実装している。これは、私がデータベース
func (post Post) UpdateQuery() ([]interface{}, error){
//run query using the
return //I dont know how to structure the return statement
}
を照会するために使用しています方法です
上記のインターフェイスとその実装方法を構造化することで、クエリの結果を実装関数に返すことができます。 質問に何かを追加したり改善したりする必要がある場合は、すぐにお知らせします。 ありがとう!
それはに似て設計されている場合あなたのCRUDインターフェースは、より良いかもしれません[this one](https://godoc.org/github.com/sauerbraten/crudapi#Storage) –
あなたは本当に試してみてください_minimal_例を考えてください。そして、してください:空のインターフェイスを取り除く。あなたが何をしようとしても、 'interface {}'で終わると間違っています。 – Volker