Does go allow you to instantiate a struct from a string? (similar to ruby convert class name in string to actual class in Ruby)
I am trying to separate code from a single file into subdirectories but was getting undefined: PngConverter
when running go build
. It may have been a load order issue however now I'm trying to dynamically instantiate the struct.
convert_image.go
var converters = map[string]string{
"png": "PngConverter",
"jpg": "JpegConverter",
"jpeg": "JpegConverter",
}
type Converter interface {
convert(*bytes.Buffer) string
}
func selectConverter(converterName string) {
// dynamically initialize the converter with reflect?
}
func ConvertImageToWords(filename string, image *bytes.Buffer) string {
ext = Ext(filename)
if converterName, y := converters[ext]; y {
converter = selectConverter(converterName)
id = converter.convert(image)
}
return nil
}
converters/png_converter.go
type PngConverter struct {}
func (converter PngConverter) convert(in *bytes.Buffer) string {
// ...
}
converters/jpeg_converter.go
type JpegConverter struct {}
func (converter JpegConverter) convert(in *bytes.Buffer) string {
// ...
}