골랑 슬라이스 삭제
Golang에서 슬라이스는 매우 실용적인 데이터 구조입니다. 이는 배열과 매우 유사하지만 동적으로 확장 및 축소할 수 있습니다. 그러나 슬라이스에서 요소를 삭제해야 하는 경우 몇 가지 추가 작업이 필요할 수 있습니다. 이 기사에서는 Golang에서 슬라이스를 사용하여 요소를 삭제하는 방법을 설명합니다.
Golang에서는 make 함수를 사용하여 슬라이스를 만듭니다. 예를 들어, 아래 표시된 코드는 세 개의 초기 값을 포함하는 슬라이스를 생성합니다:
a := make([]int, 3) a[0] = 1 a[1] = 2 a[2] = 3
이제 세 개의 정수(1, 2, 3)를 포함하는 길이가 3인 슬라이스가 있습니다. 이 슬라이스의 두 번째 요소인 2를 삭제한다고 가정해 보겠습니다.
먼저 Golang에서 제공하는 “append” 기능을 살펴보겠습니다. 이를 통해 슬라이스 끝에 하나 이상의 요소를 추가할 수 있습니다. 이는 삭제 작업을 구현하는 데 사용할 수 있는 매우 편리한 기능입니다. 특히, 추가 기능을 사용하여 슬라이스에서 요소를 제거한 다음 제거된 요소를 포함하지 않는 새 슬라이스를 반환할 수 있습니다.
예제를 살펴보겠습니다.
a := []int{1, 2, 3} a = append(a[:1], a[2:]...) fmt.Println(a) // 输出 [1, 3]
이 예에서는 먼저 초기 슬라이스를 선언한 다음 추가 기능을 사용하여 슬라이스의 두 번째 요소를 삭제합니다. 이 예에서는 슬라이스 연산자 [:]를 사용하여 슬라이스의 일부를 선택합니다. a[:1]은 슬라이스의 시작 위치(0)에서 시작하여 첫 번째 위치(1)에서 끝나는 것을 의미합니다. a[2:]는 세 번째 위치(2)에서 시작하여 슬라이스의 끝에서 끝나는 것을 의미합니다. 마지막으로, 이 두 개의 "절반 슬라이스"를 두 번째 요소(예: 2)를 포함하지 않는 새로운 슬라이스로 재조립합니다.
append 함수를 호출할 때 "..." 연산자를 사용한다는 점에 유의하세요. 이는 슬라이스를 개별 요소로 "압축 해제"할 수 있게 해주는 Golang의 구문 설탕입니다. 따라서 a[2:]... 는 3으로 언팩될 수 있습니다. 또한 추가 기능의 결과를 원래 슬라이스 a에 다시 할당해야 합니다. 그렇지 않으면 작업이 원본 슬라이스에 아무런 영향을 미치지 않습니다.
이 방법은 목적을 달성할 수 있지만 단점이 있습니다. 요소를 삭제할 때마다 새 슬라이스를 재할당해야 합니다. 큰 조각에서 여러 요소를 삭제해야 하는 경우 이 접근 방식은 매우 비효율적일 수 있습니다. 따라서 어떤 경우에는 요소를 제거하기 위해 다른 방법을 사용해야 할 수도 있습니다.
Golang에서 슬라이스 요소를 삭제하는 또 다른 방법은 내장된 복사 기능을 사용하는 것입니다. "추가"를 사용하는 것과 달리 복사 기능을 사용하면 새 슬라이스를 재할당할 필요가 없습니다. 대신 복사 기능을 사용하여 슬라이스의 요소를 앞으로 이동한 다음 삭제할 요소를 생략할 수 있습니다. 구체적으로, 삭제할 요소를 슬라이스의 마지막 요소로 바꾼 다음 포인터를 슬라이스 뒤로 이동할 수 있습니다. 이러한 방식으로 삭제할 요소를 "덮어쓰고" 슬라이스에 있는 모든 요소의 순서를 올바르게 유지할 수 있습니다. 그런 다음 슬라이스의 길이를 1만큼 줄여 마지막 요소(제거된 요소의 위치에 복사됨)를 제거할 수 있습니다.
다음은 복사 기능을 사용하여 슬라이스 요소를 삭제하는 예입니다.
a := []int{1, 2, 3} i := 1 copy(a[i:], a[i+1:]) a[len(a)-1] = 0 // 或 a = a[:len(a)-1] fmt.Println(a) // 输出 [1, 3, 0]
이 예에서는 먼저 초기 슬라이스를 선언하고 삭제할 요소의 인덱스는 1입니다(슬라이스에서 인덱스는 두 번째 요소 인덱스는 1)입니다. 그런 다음 복사 함수를 호출하여 슬라이스의 나머지 부분(두 번째 요소부터 시작)을 한 위치 앞으로 이동하여 삭제할 요소를 덮었습니다. 마지막으로 슬라이스의 길이를 1만큼 줄이고 마지막 요소를 0으로 설정하거나 a = a[:len(a)-1]을 사용하여 마지막 요소를 완전히 제거할 수 있습니다.
주의해야 할 점은 복사 기능을 사용할 때 슬라이스에 복사할 요소 수를 명시적으로 지정해야 합니다. 이 예에서는 a[i+1:]을 사용하여 삭제할 요소 옆의 요소부터 시작하여 슬라이스 끝에서 끝나는 것을 선택합니다. 다음 단계에서 해당 값을 0으로 설정(또는 제거)하므로 이 선택에는 마지막 요소가 포함됩니다.
이 글에서는 Golang에서 슬라이스 요소를 삭제하는 두 가지 방법을 소개합니다. 첫 번째 방법은 "추가" 기능을 사용하고, 두 번째 방법은 "복사" 기능을 사용합니다. 두 방법 모두 슬라이스의 요소를 효과적으로 삭제할 수 있지만 복잡성은 다소 다릅니다. 성능 요구사항이 높은 상황에서는 보다 효율적인 방법을 선택해야 할 수도 있고, 간결한 코드가 필요한 경우 이해하기 쉬운 방법을 사용할 수 있습니다.
위 내용은 골랑 슬라이스 삭제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사에서는 GO의 패키지 가져 오기 메커니즘을 설명합니다. 명명 된 수입 (예 : 가져 오기 & quot; fmt & quot;) 및 빈 가져 오기 (예 : import _ & quot; fmt & quot;). 명명 된 가져 오기는 패키지 내용을 액세스 할 수있게하고 빈 수입은 t 만 실행합니다.

이 기사에서는 MySQL 쿼리 결과를 GO 구조 슬라이스로 효율적으로 변환합니다. 수동 구문 분석을 피하고 최적의 성능을 위해 데이터베이스/SQL의 스캔 방법을 사용하는 것을 강조합니다. DB 태그 및 Robus를 사용한 구조물 필드 매핑에 대한 모범 사례

이 기사에서는 웹 애플리케이션에서 페이지 간 데이터 전송에 대한 Beego의 NewFlash () 기능을 설명합니다. NewFlash ()를 사용하여 컨트롤러간에 임시 메시지 (성공, 오류, 경고)를 표시하여 세션 메커니즘을 활용하는 데 중점을 둡니다. 한계

이 기사는 단위 테스트를 위해 이동 중에 모의와 스터브를 만드는 것을 보여줍니다. 인터페이스 사용을 강조하고 모의 구현의 예를 제공하며 모의 집중 유지 및 어설 션 라이브러리 사용과 같은 모범 사례에 대해 설명합니다. 기사

이 기사에서는 GO의 제네릭에 대한 사용자 정의 유형 제약 조건을 살펴 봅니다. 인터페이스가 일반 함수에 대한 최소 유형 요구 사항을 정의하여 유형 안전 및 코드 재사성을 향상시키는 방법에 대해 자세히 설명합니다. 이 기사는 또한 한계와 모범 사례에 대해 설명합니다

이 기사는 OS.WriteFile (작은 파일에 적합)과 OS.OpenFile 및 Buffered Writes (큰 파일에 최적)를 비교하여 효율적인 파일 쓰기를 자세히 설명합니다. 강력한 오류 처리, 연기 사용 및 특정 오류 확인을 강조합니다.

이 기사는 GO에서 단위 테스트 작성, 모범 사례, 조롱 기술 및 효율적인 테스트 관리를위한 도구를 다루는 것에 대해 논의합니다.

이 기사는 추적 도구를 사용하여 GO 응용 프로그램 실행 흐름을 분석합니다. 수동 및 자동 계측 기술, Jaeger, Zipkin 및 OpenTelemetry와 같은 도구 비교 및 효과적인 데이터 시각화를 강조합니다.
