2016-05-02 244 views
0

我有一對夫婦的結構,如:初始化結構動態

type SomeObject struct { 
    sample int 
} 

我想根據我的請求身體得到填補sample變量。爲此,我想創建一個函數,將請求主體作爲字符串傳遞給它,在裏面創建一個空的結構,用數據填充結構,返回它,並用這個替換選定的結構。

我該怎麼做?我從函數返回什麼?有沒有辦法做到這一點?

回答

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 
} 
1

如何

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

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

是的,併爲獲取請求正文,傳入參數一個字符串的請求FormValue或請求的指針 – Fantasim