순서가 중요한 경우
package main
import "fmt"
func remove(slice []int, s int) []int {
return append(slice[:s], slice[s+1:]...)
}
func main() {
var Slice1 = []int{1, 2, 3, 4, 5}
fmt.Printf("slice1: %v\n", Slice1)
Slice2 := remove(Slice1, 2)
fmt.Printf("slice2: %v\n", Slice2)
}
실행 결과
slice1: [1 2 3 4 5]
slice2: [1 2 4 5]
순서가 중요하지 않은 경우
package main
import "fmt"
func remove(s []int, i int) []int {
s[i] = s[len(s)-1]
return s[:len(s)-1]
}
func main() {
var Slice1 = []int{1, 2, 3, 4, 5}
fmt.Printf("slice1: %v\n", Slice1)
Slice2 := remove(Slice1, 2)
fmt.Printf("slice2: %v\n", Slice2)
}
실행결과
slice1: [1 2 3 4 5]
slice2: [1 2 5 4]
설명
속도는 후자가 더 빠르기 때문에, 순서가 중요한 경우 전자를 사용하고 순서보다 속도가 중요할 때에는 후자를 사용하면 된다.
출처
https://www.delftstack.com/ko/howto/go/how-to-delete-an-element-from-a-slice-in-golang/