-
[Golang] 슬라이스 데이터 삭제 및 자리 시프트 바로 실행언어/Golang 2016. 10. 12. 13:39
슬라이스는 배열과 달리 크기가 동적이고 길이가 고정되어 있지 않아 아래의 방식이 가능하지만 배열의 경우 에러가 납니다.
2개 이상의 데이터가 슬라이스에 존재한다고 가정하고 중간 데이터를 삭제를 하면 슬라이스의 중간에 빈 값이 존재하게 됩니다. 이러한 경우에 삭제한 데이터 뒤에 존재하는 데이터들을 앞으로 시프트 하는 방법을 아래 예시를 통해 설명하겠습니다.
예) [32, 29, 78, 16, 81]의 데이터를 가지는 슬라이스에서 78번을 삭제한 다음, [16, 81]을 앞으로 한 칸씩 당겨야 하는 경우
1. [32, 29, 78, 16, 81] - 78 삭제
2. [32, 29, null, 16, 81] - 78자리에 빈 값존재
3. [32, 29 16, 81] - 이와 같이 삭제된 인덱스 다음 인덱스들의 자리를 한 칸씩 당겨야 함
import "fmt" func main() { items := []int{32, 29, 78, 16, 81} items = items[:2 + copy(items[2:], items[2 + 1:])] fmt.Println(items) } // [32, 29, 16, 81]