title: Setting values of concrete struct by using interface
body: <p>I am trying to set the value of a property in a concrete struct, with a method that uses and interface implemented by that struct.  The struct is also composed by another struct.</p>
  
  <p>With the sample below userId value remains "aaaa" and is not updated to "userid1". </p>
  
  <p>How can I update values of struct through a method interface as parameter and the struct as argument?</p>
  
  <pre><code>func main() {
  
      user:=User{}
  
      mw:=SomeMiddleware{}
      user.UserId="aaaa"
      mw.Process(user)
  
      fmt.Println("UserId: " + user.UserId)
  }
  
  type IUser interface {
     SetUserId(string)
  }
  
  type SomeMiddleware struct {
  }
  
  func(m SomeMiddleware) Process(user IUser){
      user.SetUserId("userid1")
  }
  
  
  type User struct {
      UserInfo
  }
  
  type UserInfo struct {
      UserId string
  }
  
  func(ui UserInfo) SetUserId(userId string) {
      ui.UserId=userId
  }
  </code></pre>