# simple value - [x] int - [x] int8 - [x] int16 - [x] int32 - [x] int64 - [x] uint - [x] uint8 - [x] uint16 - [x] uint32 - [x] uint64 - [x] float32 - [x] float64 - [x] string - [x] bool # one level - [x] int => *int - [x] *int => int - [x] [3]int => [3]int - [x] [3]int => []int - [x] map[string]int => map[string]int - [x] map[string]int => struct - [x] []int => [3]int - [x] []int => []int - [x] strut => map[string]int - [x] struct => struct # two levels - [ ] slice + array - [ ] slice + map - [x] [][]int => [][]int - [ ] slice + struct - [ ] array + array - [ ] array + map - [ ] array + slice - [ ] array + struct - [ ] map + array - [ ] map + map - [ ] map + slice - [ ] map + struct - [ ] struct + (array, map, slice, struct) # existing value - [x] int => *int - [x] []int => []*int - [x] [3]int => [3]*int - [x] struct (int) => struct (*int) - [x] map[string]int => map[string]*int - [x] int => *interface{} (*int) - [x] []int => *interface{} ([]*int) # new value - [x] int => *int - [x] [3]int => *[3]int - [x] struct => *struct - [x] []int => []int - [x] map[string]int => map[string]int # nil - [x] int => (*int)(nil) - [x] (*int)(nil) => int - [x] (**int)(nil) => int - [x] &(*int)(nil) => int - [x] (*int)(nil) => *int - [x] (**int)(nil) => *int - [x] &(*int)(nil) => *int - [x] []int => []int - [x] map[string]int => map[string]int # empty interface - [x] *interface{} => int - [x] *interface{} => []int - [x] int => *interface{} - [x] []int => *interface{} - [x] []interface{} => []int - [x] []int => []interface{} - [x] []interface{} => []interface{} - [x] map[string]interface{} => map[string]int - [x] map[string]int => map[string]interface{} - [x] map[string]interface{} => map[string]interface{}
simple value
one level
two levels
existing value
new value
nil
empty interface