오류: 맵의 구조체 필드에 할당할 수 없습니다
구조체를 저장하는 맵으로 작업할 때 개발자는 "구조체에 할당할 수 없습니다"라는 오류가 자주 발생합니다. 지도에 필드가 표시됩니다." 이 문제는 맵에 저장된 구조체 내의 하위 필드를 수정하려고 할 때 발생합니다.
제공된 예는 이 시나리오를 보여줍니다. 맵 스냅샷은 값이 사용자 구조체 조각을 포함하는 구조체 스냅샷인 키-값 쌍으로 초기화됩니다. 그러나 사용자 슬라이스에 추가하려고 하면 언급된 오류가 발생합니다.
이 문제를 해결하려면 맵에 저장된 원래 구조체를 주소 지정할 수 없다는 점을 이해하는 것이 중요합니다. 대신에 그것은 사본입니다. 따라서 모든 수정 사항은 지도의 원래 구조체에 반영되지 않습니다.
올바른 접근 방식은 지도에서 구조체를 검색하고 필요한 수정을 한 다음 지도에 다시 할당하는 것입니다. 다음은 이 접근 방식을 구현하는 수정된 코드입니다.
func main() { snapshots := make(map[string]Snapshot, 1) snapshots["test"] = Snapshot{ Key: "testVal", Users: make([]Users, 0), } user := Users{...} // Initialize a new Users struct // Retrieve the Snapshot value from the map snapshot := snapshots["test"] // Append to the Users slice snapshot.Users = append(snapshot.Users, user) // Reassign the modified Snapshot value to the map snapshots["test"] = snapshot }
이 접근 방식을 따르면 지도의 원본 Snapshot 구조가 추가된 사용자 슬라이스로 성공적으로 업데이트됩니다.
위 내용은 맵의 구조체 필드에 할당할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!