2016-05-02 6 views
0

ように私は、構造体のカップルを持っている:私はリクエストボディに得るものに基づいてsample変数を埋めるためにしたい初期構造を動的

type SomeObject struct { 
    sample int 
} 

。これを行うには、関数を作成し、要求本体を文字列として渡し、内部に空の構造を作成し、構造をデータで埋めて返し、選択した構造をこれに置き換えたいとします。

どうすればよいですか?関数から何を返すのですか?これを行う方法はありますか?

答えて

1

あなたは複数の種類を扱っているなら、あなたはあなたの方法が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 
} 
1

どの程度

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

または

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

はい、get request bodyには、リクエストFormValueまたはリクエスト時のポインタのパラメータを渡します。 – Fantasim