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 |