ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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]


    댓글