Slide 32
Slide 32 text
kayac/ddl-maker structͷύʔε෦
func parseField(field reflect.StructField, d dialect.Dialect) dialect.Column {
tagStr := strings.Replace(field.Tag.Get(TAGPREFIX), " ", "", -1)
var typeName string
if field.Type.PkgPath() != "" {
// ex) time.Time
pkgName := field.Type.PkgPath()
if strings.Contains(pkgName, "/") {
pkgs := strings.Split(pkgName, "/")
pkgName = pkgs[len(pkgs)-1]
}
typeName = fmt.Sprintf("%s.%s", pkgName, field.Type.Name())
} else if field.Type.Kind().String() == "ptr" {
// pointer type
typeName = fmt.Sprintf("*%s", field.Type.Elem())
} else {
typeName = field.Type.Name()
}
return newColumn(snaker.CamelToSnake(field.Name), typeName, tagStr, d)
}