仅在字符串中具有对象类型时,如何创建对象?我正在寻找类似的东西:
type someStruct struct {} resultObject := new "someStruct"
当使用不同的ORM库(例如GORP和GORM)时,这将非常有用和方便。
可以在Golang中做到吗?
没有…
好吧,答案是“是,但是”,但是很大。Go中没有结构名称的中央注册表。您不会得到一个很好的,干净的标准库函数StructFromName(string),该函数可能正是您所希望的。
StructFromName(string)
相反,您必须自己编写映射,例如
func StringToStruct(name string) (interface{}, error) { switch name { case "SomeStruct": return SomeStruct{}, nil case "SomeOtherStruct": return SomeOtherStruct{}, nil case "subpackage.Struct": return subpackage.Struct{}, nil default: return nil, fmt.Errorf("%s is not a known struct name", name) } }