为了账号安全,请及时绑定邮箱和手机立即绑定

动态初始化结构

动态初始化结构

Go
白衣染霜花 2022-01-10 10:24:12
我有几个结构,例如:type SomeObject struct {   sample int}我想sample根据我在请求正文中得到的内容来填充变量。为此,我想创建一个函数,将请求主体作为字符串传递给它,在里面创建一个空结构,用数据填充结构,返回它,然后用这个替换选择的结构。我该怎么做呢?我从函数返回什么?有没有办法做到这一点?
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

如果您正在处理多种类型,那么您应该让您的方法返回一个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

}


查看完整回答
反对 回复 2022-01-10
?
弑天下

TA贡献1818条经验 获得超8个赞

怎么样


func foo (s *SomeObject) {

    s.sample = 123

}

或者


func (s *SomeObject) foo() {

    s.sample = 123

}


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信