構造体のフィールド一覧を取得したくなったので、reflectを使って実装。
struct2map.go
package main
import (
"fmt"
"reflect"
)
func StructToMap(data interface{}) map[string]interface{} {
result := make(map[string]interface{})
elem := reflect.ValueOf(data).Elem()
size := elem.NumField()
for i := 0; i < size; i++ {
field := elem.Type().Field(i).Name
value := elem.Field(i).Interface()
result[field] = value
}
return result
}
type Hoge struct {
Fuga int
Moge string
}
func main() {
hoge := Hoge{100, "hello"}
m := StructToMap(&hoge)
fmt.Println(m)
}