関数の引数に任意の構造体を渡す
開発環境はWindows10 Professional(64bit) + go1.15.3 windows/amd64。
任意の構造体のポインタを関数に渡して、その関数内で、値を書き換えたいと思います。
package main import( "fmt" "reflect" ) type A struct{ Name string } type B struct{ Name string } func AnyStruct(as interface{}){ v := reflect.Indirect(reflect.ValueOf(as)) t := v.Type() v.FieldByName(t.Field(0).Name).SetString("C") } func main(){ a := A{Name: "A"} b := B{Name: "B"} AnyStruct(&a) AnyStruct(&b) fmt.Println(a) fmt.Println(b) }
実行結果
■参考リンク
Go 言語 reflect チートシート - Qiita