go - 动态初始化结构

标签 go struct

我有几个结构,比如:

type SomeObject struct {
   sample int
}

我想根据我在请求正文中获得的内容填充 sample 变量。为此,我想创建一个函数,将请求主体作为字符串传递给它,在内部创建一个空结构,用数据填充该结构,返回它,并用它替换所选结构。

我该怎么做?我从函数返回什么?有办法做到这一点吗?

最佳答案

如果您要处理多种类型,那么您应该让您的方法返回一个接口(interface){}。对于所有适用的类型,创建一个方便的方法,例如;

func NewSomeObject(reqBody string) *SomeObject {
     return &SomeObject{sample:reqBody}
}

它接受一个字符串并返回该类型的新实例,该字段设置为传入的任何内容。您的问题缺少有关如何确定应实例化哪种类型的信息,但假设您有一些,您可能会在接收请求主体的方法中需要一个 if/else 或一个开关,所以举一个非常模糊的例子,它会是这样的;

func ProcessRequest(reqBody string) interface{} {
      if someCondition {
           return NewSomeObject(reqBody)
      } else if otherCondition {
           return NewSomeOtherObject(reqBody)
      } // potentially several other statements like this
      return nil // catch all, if no conditions match
}

关于go - 动态初始化结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36987295/

相关文章:

mongodb - 无法使用带有 golang 的 mgo 检索 "_id"值

戈朗 : Can I remove response headers coming from ReverseProxy?

golang exec 不正确的行为

c - C中函数中的typedef struct和struct之间的区别

struct - 在 View Controller 之间快速传递结构?

go - Cloud-Run 进程失败,出现 500 状态代码和 membarrier gvisor 错误

go - 无法再在 golang 中加载包

c - 结构员工 {} 比较结构 {} 员工

c - 如何比较具有常量值的结构成员?

python : Socket Sending Struct(having C stuct as Example)