>백엔드 개발 >Golang >Go의 특정 인덱스에 있는 슬라이스에 값을 삽입하는 방법은 무엇입니까?

Go의 특정 인덱스에 있는 슬라이스에 값을 삽입하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-16 06:14:02801검색

How to Insert a Value into a Slice at a Specific Index in Go?

지정된 인덱스의 슬라이스에 값 삽입

문제:

두 개의 정수 슬라이스 array1 및 array2가 제공됩니다. , 목표는 기존 요소의 순서를 유지하면서 array1의 특정 인덱스에 array2의 요소를 삽입하는 것입니다. 제공된 예에서 이는 6인 array2[2]를 array1[1]에 삽입하여 array1이 [1, 6, 3, 4, 5]가 되는 것을 의미합니다.

해결책 사용 : 연산자:

슬라이스에 값을 삽입하는 전통적인 접근 방식은 : 연산자를 활용하여 새 슬라이스를 만드는 것입니다. 그러나 이 기술을 사용하면 일반적으로 추가 요소가 삽입되며 이는 이 경우 원하는 동작이 아닙니다.

대체 솔루션:

1. Go 1.21 Slices.Insert 함수:

Go 1.21이 출시되면서 슬라이스에 값을 삽입하는 프로세스를 단순화하는 전용 Slices.Insert 함수가 도입되었습니다. 구문은 다음과 같습니다.

result = slices.Insert(slice, index, value)

이 함수는 원래 조각, 값이 삽입될 인덱스, 값 자체라는 세 가지 인수를 사용합니다. 지정된 인덱스에 값을 삽입하고 슬라이스의 후속 요소를 오른쪽으로 이동합니다.

2. 수동 삽입:

또 다른 접근 방식에는 2단계 프로세스가 포함됩니다.

  • 1단계: 추가 항목을 수용할 수 있는 충분한 용량을 갖춘 새 슬라이스를 만듭니다. value.
  • 2단계: 값이 삽입될 인덱스를 건너뛰고 원본 슬라이스의 기존 요소를 새 슬라이스에 복사합니다.

3. 일반 함수:

일반 함수 삽입을 구현하여 모든 유형의 슬라이스를 처리할 수 있습니다.

func insert[T any](a []T, index int, value T) []T 

이 함수는 수동 삽입 방법과 유사한 접근 방식을 따르지만 다음과 같은 유연성을 제공합니다. 다양한 종류의 슬라이스와 함께 사용할 수 있습니다.

4. Make and Copy 사용:

또 다른 옵션은 make 함수를 사용하여 원하는 용량의 새 슬라이스를 만든 다음 복사 기능을 사용하여 지정된 인덱스에 값을 삽입하면서 기존 요소를 복사하는 것입니다. :

b := make([]int, len(a)+1) 
copy(b[:index], a) 
b[index] = value 
copy(b[index+1:], a[index:])

벤치마크:

성능 벤치마크에 따르면 Slices.Insert 함수가 가장 효율적이고 그 다음이 일반 삽입 함수입니다. 전반적으로 가장 적합한 방법은 프로그램의 특정 요구 사항과 사용 중인 Go 버전에 따라 다릅니다.

위 내용은 Go의 특정 인덱스에 있는 슬라이스에 값을 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.