动态初始化结构

我有几个结构,例如:


type SomeObject struct {

   sample int

}

我想sample根据我在请求正文中得到的内容来填充变量。为此,我想创建一个函数,将请求主体作为字符串传递给它,在里面创建一个空结构,用数据填充结构,返回它,然后用这个替换选择的结构。


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


白衣染霜花
浏览 129回答 2
2回答

慕妹3242003

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

弑天下

怎么样func foo (s *SomeObject) {    s.sample = 123}或者func (s *SomeObject) foo() {    s.sample = 123}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go