728x90

슬라이스 요소 삭제

slice1 := []int{1, 2, 3, 4, 5}
idx := 2 // 삭제할 인덱스

for i := idx + 1; i < len(slice); i++
{
    slice2[i - 1] = slice[i]    // slice1의 모든 값을 앞으로 당기기
}

slice = slice[:len(slice)-1]    // 마지막 값을 삭제
                                // [1, 2, 4, 5, 6]

 

append를 이용한 슬라이스 요소 삭제

slice1 := []int{1, 2, 3, 4, 5}
idx := 2

// append를 이용한 slice1 복사
slice2 := append(slice1[:idx], slice1[idx+1:])

// slice1[:idx]는 [1,2]
// slice1[idx+1:]는 [4,5,6]
// 두개를 합치면 [1,2,4,5,6]

 

슬라이스 요소 추가

slice := []int{1, 2, 3, 4, 5, 6}
slice = append(slice, 0) // 맨 뒤에 요소 추가

idx := 2 // 추가하려는 위치

for i := len(slice)-2; i <= idx; i--
{
    slice[i+1] = slice[i] // 맨 뒤부터 추가하려는 위치까지 값을 하나씩 밀기
}

slice[idx] = 100 // 값 변경

 

append를 이용한 슬라이스 요소 추가

slice := []int{1, 2, 3, 4, 5, 6}
idx := 2

// append를 이용한 slice1 복사
slice = append(slice[:idx], append([]int{100}, slice[idx:]))

// slice[:idx]는 처음부터 삽입하는 위치까지의 슬라이스 [1, 2]
// []int{100}은 삽입하려는 값으로 10 한개만 갖는 슬라이스
// slice[idx:]는 삽입하려는 위치부터 끝까지의 슬라이스 [3,4,5,6]
// append함수로 []int{100}에 slice[idx:]를 합쳐서 [100, 3, 4, 5, 6]
// append함수로[1, 2]에 [100, 3, 4, 5, 6]를 합쳐서 [1, 2, 100, 3, 4, 5, 6]

 

copy로 요소 추가

slice := []int{1, 2, 3, 4, 5, 6}
idx := 2

slice = append(slice, 0) // 맨 뒤에 요소 추가
copy(slice[idx+1:], slice[idx:]) // 값 복사
slice[idx] = 100 // 값 변경

 

- 출처 : Tucker의 Go 언어 프로그래밍

728x90

'Basic Programming > Golang' 카테고리의 다른 글

Golang - 채널 / 셀렉트  (1) 2023.09.16
Golang - 슬라이스 정렬  (1) 2023.07.13
Golang - 슬라이스 복제  (0) 2023.07.13
Golang - Slicing  (0) 2023.07.13
Golang - Slice append()를 사용할 때 발생하는 문제  (0) 2023.07.12

+ Recent posts