Go에서 "유형 인터페이스 {}는 인덱싱을 지원하지 않습니다." 오류 극복
다양한 인터페이스를 보유하는 맵으로 작업할 때{} 값을 인덱싱하려고 할 때 오류가 발생할 수 있습니다. 특히 "유형 인터페이스 {}는 인덱싱을 지원하지 않습니다." 이는 인터페이스{} 유형이 본질적으로 인덱싱을 지원하지 않기 때문에 발생합니다.
이 맵에서 요소를 성공적으로 인덱싱하고 액세스하려면 인터페이스{} 값을 슬라이스와 같은 예상 유형으로 명시적으로 변환해야 합니다. . 이 변환은 대괄호 안에 대상 유형을 지정하여 수행할 수 있습니다.
예를 들어 다음 Go 코드를 고려하세요.
package main import "fmt" type Host struct { Name string } func main() { Map := make(map[string]interface{}) Map["hosts"] = []Host{Host{"test.com"}, Host{"test2.com"}} // Convert interface{} to a slice of Host hm := Map["hosts"].([]Host) fmt.Println(hm[0]) }
이 예에서 지도 "Map"은 다음으로 채워집니다. 호스트 구조의 일부입니다. 슬라이스의 첫 번째 요소에 액세스하려면 "Map['hosts']"의 인터페이스{} 값을 []Host 유형으로 변환해야 합니다. 이는 다음 표현식을 사용하여 수행됩니다.
hm := Map["hosts"].([]Host)
변환을 사용하면 표준 Go 슬라이스처럼 슬라이스의 요소에 액세스할 수 있습니다. 이 경우 호스트 조각의 첫 번째 요소이므로 출력은 "test.com"이 됩니다.
위 내용은 Go에서 '유형 인터페이스 {}는 인덱싱을 지원하지 않습니다' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!