삭제 방법: 1. "slice object [N:]" 문을 사용하여 첫 번째 N 요소를 삭제합니다. 2. "append(slice object [:i], Slice object [i+N:]...)를 사용합니다. " 문을 사용하여 중간 N 요소를 삭제합니다. 3. "slice object [:len(slice object)-N]" 문을 사용하여 마지막 N 요소를 삭제합니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, GO 1.11.2, Dell G3 컴퓨터.
Go 언어는 슬라이스 요소를 삭제하기 위한 특별한 구문이나 인터페이스를 제공하지 않습니다. 요소를 삭제하려면 슬라이스 자체의 특성을 사용해야 합니다. 삭제할 요소, 즉 처음부터 삭제하고, 중간에서 삭제하고, 끝 부분에서 요소를 삭제하는 것이 가장 빠릅니다.
처음부터 삭제
처음에 있는 요소를 삭제하면 데이터 포인터를 직접 이동할 수 있습니다.
a = []int{1, 2, 3} a = a[1:] // 删除开头1个元素 a = a[N:] // 删除开头N个元素
데이터 포인터를 이동할 수도 없지만 다음 데이터를 처음으로 이동하면 추가를 사용하여 완료할 수 있습니다. it in place(소위 제자리 완성) 원본 슬라이스 데이터에 해당하는 메모리 간격 내에 완료되고 메모리 공간 구조에 변화가 발생하지 않음을 의미합니다.
a = []int{1, 2, 3} a = append(a[:0], a[1:]...) // 删除开头1个元素 a = append(a[:0], a[N:]...) // 删除开头N个元素
copy()를 사용할 수도 있습니다. 시작 요소를 삭제하는 함수:
a = []int{1, 2, 3} a = a[:copy(a, a[1:])] // 删除开头1个元素 a = a[:copy(a, a[N:])] // 删除开头N个元素
가운데 위치에서 삭제
가운데 요소를 삭제하려면 나머지 요소를 전체적으로 이동해야 합니다. 추가 또는 복사를 사용하여 제자리에서 완료할 수도 있습니다.
a = []int{1, 2, 3, ...} a = append(a[:i], a[i+1:]...) // 删除中间1个元素 a = append(a[:i], a[i+N:]...) // 删除中间N个元素 a = a[:i+copy(a[i:], a[i+1:])] // 删除中间1个元素 a = a[:i+copy(a[i:], a[i+N:])] // 删除中间N个元素
꼬리에서 삭제
a = []int{1, 2, 3} a = a[:len(a)-1] // 删除尾部1个元素 a = a[:len(a)-N] // 删除尾部N个元素
시작 요소를 삭제하는 것과 꼬리 요소를 삭제하는 것은 모두 고려될 수 있습니다. 중간 요소를 삭제하는 특별한 경우입니다.
【예시】슬라이스의 지정된 위치에 있는 요소를 삭제합니다.
package main import "fmt" func main() { seq := []string{"a", "b", "c", "d", "e"} // 指定删除位置 index := 2 // 查看删除位置之前的元素和之后的元素 fmt.Println(seq[:index], seq[index+1:]) // 将删除点前后的元素连接起来 seq = append(seq[:index], seq[index+1:]...) fmt.Println(seq) }
코드 출력 결과:
[a b] [d e] [a b d e]
코드 설명은 다음과 같습니다.
1번째 줄은 a부터 e까지 문자열을 저장하기 위한 정수 슬라이스를 선언합니다.
4행에서는 시연 및 설명의 편의를 위해 삭제해야 할 요소의 위치를 index 변수를 이용하여 저장합니다.
7번째 줄, seq[:index]는 삭제된 요소의 전반부를 나타내며 값은 [1 2], seq[index+1:]은 삭제된 요소의 후반부를 나타내며 값은 [4]입니다. 5].
10번째 줄, 두 조각을 연결하려면 Append() 함수를 사용하세요.
라인 12, 새로 연결된 슬라이스를 출력합니다. 이때 인덱스 2의 요소가 삭제되었습니다.
Go 언어에서 슬라이스 요소 삭제의 핵심은 삭제된 요소를 분할 지점으로 사용하여 전후 두 부분의 메모리를 다시 연결하는 것입니다.
추천 학습: Golang 튜토리얼
위 내용은 Go 언어의 슬라이스에서 요소를 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!