맵의 구조체 필드에 할당
필드를 수정하려고 하면 "맵의 구조체 필드에 할당할 수 없습니다"라는 오류가 발생합니다. 맵 내에 저장된 구조체입니다. 이러한 제한은 Go의 맵 키와 값의 불변성에서 비롯됩니다.
제공된 예에서 snapshots := make(map[string] Snapshot, 1)은 문자열 유형의 키와 유형의 값을 사용하여 맵을 생성합니다. Snapshot은 구조체입니다. 스냅샷 값 내의 사용자 조각을 수정하려면 적절한 절차를 따라야 합니다.
다음 접근 방식을 사용하면 사용자 조각이 올바르게 수정됩니다.
func main() { snapshots := make(map[string]Snapshot, 1) snapshots["test"] = Snapshot{ Key: "testVal", Users: make([]Users, 0), } // Get a copy of the 'Users' slice users := snapshots["test"].Users // Append user to the copy users = append(users, user) // Reassign the map entry snapshots["test"].Users = users }
' 사용자 조각의 경우 수정된 복사본을 맵 항목에 다시 할당할 수 있습니다. 이 접근 방식은 지도의 불변성을 고수합니다.
위 내용은 Go 맵의 구조체 필드에 할당할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!