一尘不染

如何在Golang中使用字符串新建对象

go

仅在字符串中具有对象类型时,如何创建对象?我正在寻找类似的东西:

type someStruct struct {}

resultObject := new "someStruct"

当使用不同的ORM库(例如GORP和GORM)时,这将非常有用和方便。

可以在Golang中做到吗?


阅读 884

收藏
2020-07-02

共1个答案

一尘不染

没有…

好吧,答案是“是,但是”,但是很大。Go中没有结构名称的中央注册表。您不会得到一个很好的,干净的标准库函数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)
    }
}
2020-07-02