Go에서 객체 배열을 포함하는 맵을 인덱싱하는 방법: "유형 인터페이스 {}가 인덱싱을 지원하지 않습니다." 오류 해결
인덱싱 Go에서 객체 배열을 포함하는 맵은 "유형 인터페이스 {}가 인덱싱을 지원하지 않습니다." 오류가 발생할 수 있습니다. 이 오류는 Go가 인터페이스 유형으로 표시되는 배열 요소의 예상 유형을 모르기 때문에 발생합니다.
이 오류를 극복하고 원하는 요소를 검색하려면 인터페이스를 명시적으로 변환해야 합니다.{} 값을 예상하는 특정 유형으로 설정합니다.
다음 맵을 고려하세요.
Map := make(map[string]interface{}) Map["Users"] = Users_Array Map["Hosts"] = Hosts_Array
"Users" 배열의 첫 번째 요소에 액세스하려면 다음을 사용하세요. 코드:
Users_Array := Map["Users"].([]User) firstUser := Users_Array[0]
마찬가지로 "호스트" 배열의 경우:
Hosts_Array := Map["Hosts"].([]Host) firstHost := Hosts_Array[0]
특정 유형으로 변환하면 인덱싱 작업이 성공적으로 수행될 수 있습니다. 변환을 수행하지 못하면 "유형 인터페이스 {}는 인덱싱을 지원하지 않습니다." 오류가 발생합니다.
다음은 변환 및 인덱싱 프로세스를 보여주는 예입니다.
package main import "fmt" type Host struct { Name string } type User struct { Name string } func main() { Map := make(map[string]interface{}) Map["hosts"] = []Host{{"test.com"}, {"test2.com"}} Map["users"] = []User{{"john"}, {"jane"}} hm := Map["hosts"].([]Host) fmt.Println(hm[0]) um := Map["users"].([]User) fmt.Println(um[0]) }
위 내용은 Go Maps에서 '유형 인터페이스 {}가 인덱싱을 지원하지 않음'을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!