()
| 25 | } |
| 26 | |
| 27 | func (f *HashableFileStruct) Pack() string { |
| 28 | hasher := md5.New() |
| 29 | val := reflect.ValueOf(*f) |
| 30 | for i := 0; i < val.NumField(); i++ { |
| 31 | field := val.Field(i) |
| 32 | |
| 33 | var fieldValue []byte |
| 34 | switch field.Kind() { |
| 35 | case reflect.String: |
| 36 | fieldValue = []byte(field.String()) |
| 37 | case reflect.Int64: |
| 38 | fieldValue = []byte(strconv.FormatInt(field.Int(), 10)) |
| 39 | } |
| 40 | |
| 41 | hasher.Write(fieldValue) |
| 42 | } |
| 43 | return hex.EncodeToString(hasher.Sum(nil)) |
| 44 | } |