유형이 선언된 인터페이스 조각에서 요소 제거
Go에서 인터페이스 조각으로 작업할 때 내부 요소를 제거하거나 수정해야 할 수도 있습니다. 그들을. 그러나 유형이 선언된 슬라이스에 직접 할당하면 "값에 할당할 수 없습니다.([]인터페이스 {})" 오류가 발생할 수 있습니다.
이 오류는 인터페이스 값에 래핑된 값의 복사본이 포함되어 있기 때문에 발생합니다. 그것에 대한 언급이 아닙니다. 따라서 인터페이스 값을 수정하려는 시도는 복사본에만 영향을 미치고 원본 슬라이스에는 영향을 미치지 않습니다.
유형이 선언된 인터페이스 슬라이스에서 요소를 제거하려면 대신 인터페이스에 슬라이스 포인터를 저장해야 합니다. 이를 통해 실제 슬라이스인 지정된 값을 수정할 수 있습니다.
다음 예를 고려하세요.
s := []interface{}{0, "one", "two", 3, 4} var value interface{} = &s // Remove the element at index 2 ("two") sp := value.(*[]interface{}) i := 2 *sp = append((*sp)[:i], (*sp)[i+1:]...) fmt.Println(value)
이 코드에서 인터페이스 값 값에는 대신 슬라이스 포인터 &s가 할당됩니다. 슬라이스 자체의. 그런 다음 유형 어설션은 인터페이스에서 슬라이스 포인터를 검색합니다. 역참조된 값 *sp를 수정하면 원래 슬라이스가 업데이트됩니다.
출력은 &[0 one 3 4]가 되어 슬라이스에서 "2"가 제거되었음을 확인합니다. 이 기술을 사용하면 유형이 지정된 인터페이스 조각을 안전하고 효과적으로 수정할 수 있습니다.
위 내용은 Go에서 유형이 선언된 인터페이스 조각에서 요소를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!