문제:
두 개의 정수 슬라이스 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단계 프로세스가 포함됩니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!