Go (Golang)
Golang, 배열과 슬라이스 비교, 슬라이스 항목 제거
수알치
2024. 1. 14. 16:01
Golang, 배열과 슬라이스 비교, 슬라이스 항목 제거
글. 수알치 오상문
예제 코드는 배열과 슬라이스 비교하고,
슬라이스의 특정 값을 가진 항목 제거 및 특정 인덱스 항목을 제거하는 예제입니다.
package main
import "fmt"
func main() {
array1 := [...]int32{10, 20, 30, 40, 50} // Array [5]int32{10, 20, 30, 40, 50}
array2 := [3]int32{60, 70, 80} // Array [...]int32{60, 70, 80
var slice []int32 = make([]int32, 5, 10) // Slice : make(배열타입, 초기사용 크기, 전체 크기)
fmt.Println(slice)
fmt.Println(array1)
fmt.Println(array2)
slice = array1[:] // array1[] is Error! (Slice is OK!)
fmt.Println(slice)
slice = append(slice, array2[:]...) // array2[]... is Error! (Slice is OK!)
fmt.Println(slice)
// 슬라이스에서 50 값을 가진 항목을 모두 제거 (아이템 제거하는 내장 기능 없음)
var del_val int32 = 50
new_slice := make([]int32, 0, 0) // 임시 슬라이스
for _, v := range slice {
if v != del_val {
new_slice = append(new_slice, v)
}
}
slice = new_slice
fmt.Println(slice)
// 슬라이스에서 인덱스 5 항목 제거
idx := 5
if idx < 0 || idx < len(slice) {
slice = append(slice[:idx], slice[idx+1:]...) // append(slice[:index], slice[index+1:]) is Error!
fmt.Println(slice)
} else {
fmt.Println("인덱스 범위 오류!")
}
}
[실행 결과]
[0 0 0 0 0]
[10 20 30 40 50]
[60 70 80]
[10 20 30 40 50]
[10 20 30 40 50 60 70 80]
[10 20 30 40 60 70 80]
[10 20 30 40 60 80]
반응형