structが中身のinterfaceの型のインタスンスを、reflect.Structのチェックに通過させる方法
現在gocsvというライブラリを使っています。
このライブラリのメソッドに
gocsv.MarshalString(&client)
というものがあります。
このclientの型はstruct型のインスタンスです。(本当は配列ですが、問題を単純化するためにちょっと変更します)
このライブラリの前後処理をまとめるためにラップ関数を作りました。
このような感じです。
func convertCsvStringFromStruct(model interface{}) string {
//共通処理
gocsv.MarshalString(model)
//共通処理
}
type Hoge struct{
}
type Fuga struct{
}
convertCsvStringFromStruct(Hoge{})
convertCsvStringFromStruct(Fuga{})
しかしこのライブラリを使って実行するとこのようなエラーがでます。
cannot use interface {}, only struct supported
このエラーが出る原因はライブラリで以下のように記述している部分があるためです
func ensureInInnerType(outInnerType reflect.Type) error {
switch outInnerType.Kind() {
case reflect.Struct:
return nil
}
return fmt.Errorf("cannot use " + outInnerType.String() + ", only struct supported")
}
この問題をどのように解決すれば良いでしょうか?
このライブラリだけの問題ならまだいいのですが、他のライブラリでも似たような問題が発生して困っています。
ご回答よろしくお願いします。