func SliceDelete(slice []interface{}, index int, count int) (result []interface{}) { switch { case count < 0: panic(errs.Format("Negative count %d not allowed", count)) case count == 0: return slice } length := len(slice) errs.PanicIfErrIndexOutOfBounds("SliceDelete", index, length) if index+count > length { count = length - index } return append(slice[:index], slice[index+count:]...) }
func SliceInsert(slice []interface{}, index int, count int, value interface{}) (result []interface{}) { switch { case count < 0: panic(errs.Format("Negative count %d not allowed", count)) case count == 0: return slice } length := len(slice) errs.PanicIfErrIndexOutOfBounds("SliceInsert", index, length) result = make([]interface{}, length+count) copy(result, slice[:index]) copy(result[index+count:], slice[index:]) for i := index; i < index+count; i++ { result[i] = value } return result }