2016-05-02 9 views
0

Ich habe ein paar Strukturen, wie:initialisieren Strukturen dynamisch

type SomeObject struct { 
    sample int 
} 

Ich möchte die sample Variable füllen auf das, was ich in der Anfrage Körper. Dazu möchte ich eine Funktion erstellen, einen Anforderungskörper als String übergeben, eine leere Struktur darin erstellen, die Struktur mit Daten füllen, zurückgeben und die gewählte Struktur durch diese ersetzen.

Wie mache ich das? Was gebe ich von der Funktion zurück? Gibt es eine Möglichkeit, dies zu tun?

Antwort

1

Wenn Sie mit mehreren Typen zu tun sind, dann sollten Sie Ihre Methode eine interface{} machen zurückzukehren. Erstellen Sie für alle zutreffenden Typen eine bequeme Methode wie z.

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

Welche einen String und gibt eine neue Instanz des Typs mit dem Feld auf, was in übergeben wurde. Ihre Frage fehlt Informationen darüber, wie Sie bestimmen, welche Art instanziiert werden sollten, aber vorausgesetzt, Sie ein paar haben, Sie werden wahrscheinlich einen if/else oder einen Schalter in der Methode brauchen, die den Anforderungskörper empfängt, um ein sehr vages Beispiel zu geben.

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

Wie wäre es

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

oder

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

Ja und für get Anfrage Körper, übergeben Parameter eine Zeichenfolge für Anfrage FormValue oder ein Zeiger auf Anfrage – Fantasim

Verwandte Themen