动态初始化结构

时间:2016-05-02 16:36:17

标签: go struct

我有几个结构,比如:

sample

我想根据请求正文中的内容填充with open("lab2.txt", "r") as file_: for line in file_: text = line.rstrip() changein = int(text) coinsin = formatplural(changein,"cent") print ("The minimum amount of change for {} is" .format(coinsin)) 变量。为此,我想创建一个函数,将请求体作为字符串传递给它,在里面创建一个空结构,用数据填充结构,返回它,并用这个替换所选择的结构。

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

2 个答案:

答案 0 :(得分:1)

怎么样

func foo (s *SomeObject) {
    s.sample = 123
}

func (s *SomeObject) foo() {
    s.sample = 123
}

答案 1 :(得分:1)

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

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

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

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
}