github.com/gorilla/Schema (go): Package gorilla/schema fills a struct with form values.  The basic usage is really simple. Given this struct:  ...we can fill it passing a map to the Decode() function:  This is just a simple example and it doesn't make a lot of sense to create the map manually. Typically it will come from a http.Request object and will be of type url.Values, http.Request.Form, or http.Request.MultipartForm:  Note: it is a good idea to set a Decoder instance as a package global, because it caches meta-data about structs, and an instance can be shared safely:  To define custom names for fields, use a struct tag "schema". To not populate certain fields, use a dash for the name and it will be ignored:  The supported field types in the destination struct are:  Non-supported types are simply ignored, however custom types can be registered to be converted.  To fill nested structs, keys must use a dotted notation as the "path" for the field. So for example, to fill the struct Person below:  ...the source map must have the keys "Name", "Phone.Label" and "Phone.Number". This means that an HTML form to fill a Person struct must look like this:  Single values are filled using the first value for a key from the source map. Slices are filled using all values for a key from the source map. So to fill a Person with multiple Phone values, like:  ...an HTML form that accepts three Phone values would look like this:  Notice that only for slices of structs the slice index is required. This is needed for disambiguation: if the nested struct also had a slice field, we could not translate multiple values to it if we did not use an index for the parent struct.  There's also the possibility to create a custom type that implements the TextUnmarshaler interface, and in this case there's no need to register a converter, like:  ...an HTML form that accepts three Email values would look like this:
Keywords: encoder|forms|go|gorilla|http|schema