다른 요소에 영향을 주지 않고 특정 인덱스의 Go 슬라이스에 값을 삽입하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-19 06:57:03
원래의
417명이 탐색했습니다.

How to Insert a Value into a Go Slice at a Specific Index Without Affecting Other Elements?

주어진 인덱스의 슬라이스에 값 삽입

질문:

어떻게 인덱스에 값을 삽입할 수 있나요? 다른 요소를 포함하지 않고 Go 슬라이스의 특정 인덱스가 있습니까?

문제 설명:

array1과 array2라는 두 개의 슬라이스가 있고 array1[1]에 array2[2]를 삽입하려고 한다고 가정합니다. array1의 나머지 부분은 그대로 유지하려고 합니다.

배경:

콜론 연산자(:)를 사용하는 초기 기술이지만 후속 요소도 포함됩니다. 이 튜토리얼의 목표는 특정 인덱스에 단일 값을 삽입하는 데 초점을 맞춘 포괄적인 솔루션을 제공하는 것입니다.

해결책:

slices.Insert 패키지 사용(Go 1.21 ):

result := slices.Insert(slice, index, value)
로그인 후 복사

참고: 0 ≤ index ≤ len(slice)

Append 및 사용 과제

a = append(a[:index+1], a[index:]...)
a[index] = value
로그인 후 복사

참고: len(a) > 0 && 인덱스 < len(a)

특별한 경우:

  • len(a) == index인 경우 다음을 수행합니다.

    a = append(a, value)
    로그인 후 복사
  • 인덱스 0에 삽입하고 int 슬라이스를 처리하는 경우, do:

    a = append([]int{value}, a...)
    로그인 후 복사

사용자 정의 함수:

func insert(a []int, index int, value int) []int {
    if len(a) == index {
        return append(a, value)
    }
    a = append(a[:index+1], a[index:]...)
    a[index] = value
    return a
}
로그인 후 복사

일반 기능:

func insert[T any](a []T, index int, value T) []T {
    ...
    return a
}
로그인 후 복사

예:

slice1 := []int{1, 3, 4, 5}
slice2 := []int{2, 4, 6, 8}
slice1 = append(slice1[:2], slice1[1:]...)
slice1[1] = slice2[2]
fmt.Println(slice1) // [1 6 3 4 5]
로그인 후 복사

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿