私は基本的に多くのゲッター関数で構成される単純なパッケージを書いています。このパッケージ内の各ファイルは、サービスに対応します。たとえば、製品ファイルには、製品サービス/ db、注文ファイルからサービスなどに関連する関数が含まれています。各関数は、パラメータとしてdbリソースを基礎dbに、 SQLは、例えば、プロダクトID、名前、オーダーID。golangの関数を模擬する方法
// product.go
package lib
type Product struct {
ID int
Name string
Price float
}
func GetProductById(DB *sql.DB, ID int) (p Product, err error) {
q := "SELECT * FROM product WHERE id = " + ID
...
}
func GetProductByName(DB *sql.DB, name string) (p Product, err error) {
...
}
// order.go
package lib
type Order struct {
ID int
Date string
Items []items
}
func GetOrderById(DB *sql.DB, ID int) (o Order, err error) {
...
}
問題は、私は私のメインのパッケージから、これらの機能を模擬することはできませんよということである:各関数は、構造体(例えば注文、製品)、またはエラーを返します。私が本当にやりたいことは、パッケージを書き直すことです。だから何とか関数に代わって型に渡すことができます。しかし、私はこれを行う方法がわかりません。特に関数が異なる入力パラメータをとり、異なる構造体を返す場合は特にありません。これを行う方法はありますか?