clone return a duplicate of passed item.
(v reflect.Value)
| 12 | |
| 13 | // clone return a duplicate of passed item. |
| 14 | func (c *cloner) clone(v reflect.Value) reflect.Value { |
| 15 | switch v.Kind() { |
| 16 | case reflect.Invalid: |
| 17 | return reflect.ValueOf(nil) |
| 18 | |
| 19 | // bool |
| 20 | case reflect.Bool: |
| 21 | return reflect.ValueOf(v.Bool()) |
| 22 | |
| 23 | //int |
| 24 | case reflect.Int: |
| 25 | return reflect.ValueOf(int(v.Int())) |
| 26 | case reflect.Int8: |
| 27 | return reflect.ValueOf(int8(v.Int())) |
| 28 | case reflect.Int16: |
| 29 | return reflect.ValueOf(int16(v.Int())) |
| 30 | case reflect.Int32: |
| 31 | return reflect.ValueOf(int32(v.Int())) |
| 32 | case reflect.Int64: |
| 33 | return reflect.ValueOf(v.Int()) |
| 34 | |
| 35 | // uint |
| 36 | case reflect.Uint: |
| 37 | return reflect.ValueOf(uint(v.Uint())) |
| 38 | case reflect.Uint8: |
| 39 | return reflect.ValueOf(uint8(v.Uint())) |
| 40 | case reflect.Uint16: |
| 41 | return reflect.ValueOf(uint16(v.Uint())) |
| 42 | case reflect.Uint32: |
| 43 | return reflect.ValueOf(uint32(v.Uint())) |
| 44 | case reflect.Uint64: |
| 45 | return reflect.ValueOf(v.Uint()) |
| 46 | |
| 47 | // float |
| 48 | case reflect.Float32: |
| 49 | return reflect.ValueOf(float32(v.Float())) |
| 50 | case reflect.Float64: |
| 51 | return reflect.ValueOf(v.Float()) |
| 52 | |
| 53 | // complex |
| 54 | case reflect.Complex64: |
| 55 | return reflect.ValueOf(complex64(v.Complex())) |
| 56 | case reflect.Complex128: |
| 57 | return reflect.ValueOf(v.Complex()) |
| 58 | |
| 59 | // string |
| 60 | case reflect.String: |
| 61 | return reflect.ValueOf(v.String()) |
| 62 | |
| 63 | // array |
| 64 | case reflect.Array, reflect.Slice: |
| 65 | return c.cloneArray(v) |
| 66 | |
| 67 | // map |
| 68 | case reflect.Map: |
| 69 | return c.cloneMap(v) |
| 70 | |
| 71 | // Ptr |
no test coverage detected