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]
반응형
'Go (Golang)' 카테고리의 다른 글
go, 데스크탑 프로그램 만들기 (0) | 2024.02.04 |
---|---|
Golang, map 예제 (0) | 2024.01.14 |
Go 언어 배열 생성, 인덱스 접근, 항목 주소 확인 (0) | 2024.01.13 |
Golang 에러 처리, 에러 생성, 예외 처리 (1) | 2023.12.28 |
go 소스 코드에서 C 코드를 이용하기 (1) | 2023.12.26 |