code: func shallowSizeOfArray(arr interface{}) int64 {
  	size := int64(NUM_BYTES_ARRAY_HEADER)
  	v := reflect.ValueOf(arr)
  	if length := v.Len(); length > 0 {
  		switch v.Kind() {
  		case reflect.Bool, reflect.Int, reflect.Int8, reflect.Int16,
  			reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8,
  			reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Float32,
  			reflect.Float64, reflect.Complex64, reflect.Complex128:
  			// primitive type
  			size += int64(length) * int64(v.Elem().Type().Size())
  		default:
  			size += int64(length * NUM_BYTES_OBJECT_REF)
  		}
  	}
  	return AlignObjectSize(size)
  }
docs: /* Return shallow size of any array */