Go에서 슬라이스 내에서 항목 이동
Go에서는 슬라이스를 조작하는 것이 일반적입니다. 요소의 순서. 발생할 수 있는 작업 중 하나는 항목을 조각 내의 한 위치에서 다른 위치로 이동하는 것입니다.
이 문제를 해결하려면 다음 접근 방식을 시도할 수 있습니다.
slice := []int{0,1,2,3,4,5,6,7,8,9} indexToRemove := 1 indexWhereToInsert := 4 slice = append(slice[:indexToRemove], slice[indexToRemove+1:]...) fmt.Println("slice:", slice) newSlice := append(slice[:indexWhereToInsert], 1) fmt.Println("newSlice:", newSlice) slice = append(newSlice, slice[indexWhereToInsert:]...) fmt.Println("slice:", slice)
그러나 이 접근 방식은 결과적으로 예상치 못한 동작:
slice: [0 2 3 4 5 6 7 8 9] newSlice: [0 2 3 4 1] slice: [0 2 3 4 1 1 6 7 8 9]
알다시피, 다음과 같은 경우 원래 위치의 항목이 복제됩니다. 삽입되었습니다.
해결책:
슬라이스 내에서 항목을 올바르게 이동하려면 다음 접근 방식을 사용할 수 있습니다.
원본에서 항목 제거 위치:
removeItem := slice[indexToRemove] updatedSlice := append(slice[:indexToRemove], slice[indexToRemove+1:]...) fmt.Println("Updated slice before moving:", updatedSlice)
새 위치에 항목 삽입:
insertedSlice := append(updatedSlice[:indexWhereToInsert], removeItem) finalSlice := append(insertedSlice, updatedSlice[indexWhereToInsert:]...) fmt.Println("Final slice after moving:", finalSlice)
여기 작동 코드 예:
func main() { slice := []int{0,1,2,3,4,5,6,7,8,9} indexToRemove := 1 indexWhereToInsert := 4 removeItem := slice[indexToRemove] updatedSlice := append(slice[:indexToRemove], slice[indexToRemove+1:]...) fmt.Println("Updated slice before moving:", updatedSlice) insertedSlice := append(updatedSlice[:indexWhereToInsert], removeItem) finalSlice := append(insertedSlice, updatedSlice[indexWhereToInsert:]...) fmt.Println("Final slice after moving:", finalSlice) }
출력:
Updated slice before moving: [0 2 3 4 5 6 7 8 9] Final slice after moving: [0 2 3 4 1 5 6 7 8 9]
위 내용은 Go에서 중복 없이 슬라이스 내에서 항목을 이동하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!