유형 지정 인터페이스 슬라이스에서 요소 삭제
Go에서 인터페이스 내에 래핑된 슬라이스 값을 조작할 때 요소 제거 슬라이스에서 직접적으로는 불가능합니다. 이 작업을 수행하면 유형 어설션이 인터페이스에 저장된 값의 복사본을 생성하기 때문에 "값에 할당할 수 없습니다" 오류가 발생합니다.
유형 어설션 인터페이스에 값을 할당해도 인터페이스에 저장된 원래 값은 수정되지 않습니다. 인터페이스. 대신, 유형 주장에서 얻은 복사본만 변경합니다. 이 제한을 피하려면 인터페이스(*[]인터페이스{}) 내에 슬라이스 포인터를 저장하는 것이 좋습니다.
포인터 유형을 사용하면 포인터 자체가 아닌 가리키는 값을 변경할 수 있습니다. 이는 아래에 설명되어 있습니다.
s := []interface{}{0, "one", "two", 3, 4} var value interface{} = &s // Perform removal by accessing the pointed slice sp := value.(*[]interface{}) i := 2 *sp = append((*sp)[:i], (*sp)[i+1:]...) fmt.Println(value)
출력:
&[0 one 3 4]
인터페이스를 슬라이스 포인터([]인터페이스{})에 형식 지정하고 간접 연산자를 사용하여 () 뾰족한 슬라이스 값을 직접 수정할 수 있습니다.
위 내용은 Go 인터페이스 내에 저장된 슬라이스에서 요소를 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!