Go에서 유형 어설션된 인터페이스 조각 조작
Golang에서 유형 어설션을 통해 개발자는 인터페이스 값의 기본 구체적인 유형에 액세스할 수 있습니다. . 그러나 유형 어설션은 원래 인터페이스 값을 수정하지 않는다는 점에 유의하는 것이 중요합니다. 이는 유형이 선언된 인터페이스 조각에서 요소를 제거하려고 시도할 때 문제가 될 수 있습니다.
다음 예를 고려하십시오.
value := []interface{}{0, "one", "two", 3, 4}
유형 주장:
i := 2 value.([]interface{}) = append(value.([]interface{})[:i], value.([]interface{})[i+1:]...)
"값에 할당할 수 없습니다(유형 []인터페이스 {})"라는 오류가 발생합니다. 이는 유형 어설션이 원래 값의 복사본을 생성하고 복사본에 대한 변경 사항이 원본에 영향을 주지 않기 때문입니다.
이 문제를 해결하려면 유형이 아닌 기본 인터페이스 조각을 수정해야 합니다. 사본을 주장했습니다. 인터페이스 포인터에 슬라이스를 래핑하면 됩니다.
value := []*[]interface{}{&[]interface{}{0, "one", "two", 3, 4}}
포인터를 사용하면 기본 슬라이스를 수정할 수 있습니다.
sp := value[0] i := 2 *sp = append((*sp)[:i], (*sp)[i+1:]...)
이 경우 변경 사항은 다음과 같습니다. 지적된 슬라이스는 원래 인터페이스 값에 반영됩니다.
fmt.Println(value) // Output: [*[]interface {0 one 3 4}]
인터페이스 포인터를 활용하여 개발자는 유형이 지정된 슬라이스를 조작할 수 있습니다. 할당 오류가 발생하지 않는 인터페이스.
위 내용은 Go에서 유형이 선언된 인터페이스 조각을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!