GetExtensions returns a list of the extensions values present in m, corresponding with the provided list of extension descriptors, xts. If an extension is missing in m, the corresponding value is nil.
(m Message, xts []*ExtensionDesc)
| 200 | // corresponding with the provided list of extension descriptors, xts. |
| 201 | // If an extension is missing in m, the corresponding value is nil. |
| 202 | func GetExtensions(m Message, xts []*ExtensionDesc) ([]interface{}, error) { |
| 203 | mr := MessageReflect(m) |
| 204 | if mr == nil || !mr.IsValid() { |
| 205 | return nil, errNotExtendable |
| 206 | } |
| 207 | |
| 208 | vs := make([]interface{}, len(xts)) |
| 209 | for i, xt := range xts { |
| 210 | v, err := GetExtension(m, xt) |
| 211 | if err != nil { |
| 212 | if err == ErrMissingExtension { |
| 213 | continue |
| 214 | } |
| 215 | return vs, err |
| 216 | } |
| 217 | vs[i] = v |
| 218 | } |
| 219 | return vs, nil |
| 220 | } |
| 221 | |
| 222 | // SetExtension sets an extension field in m to the provided value. |
| 223 | func SetExtension(m Message, xt *ExtensionDesc, v interface{}) error { |