맵의 구조체 필드에 할당할 수 없는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-12 22:36:02
원래의
385명이 탐색했습니다.

Why Can't I Assign to a Struct Field in a Map?

오류: 맵의 구조체 필드에 할당할 수 없습니다

구조체를 저장하는 맵으로 작업할 때 개발자는 "구조체에 할당할 수 없습니다"라는 오류가 자주 발생합니다. 지도에 필드가 표시됩니다." 이 문제는 맵에 저장된 구조체 내의 하위 필드를 수정하려고 할 때 발생합니다.

제공된 예는 이 시나리오를 보여줍니다. 맵 스냅샷은 값이 사용자 구조체 조각을 포함하는 구조체 스냅샷인 키-값 쌍으로 초기화됩니다. 그러나 사용자 슬라이스에 추가하려고 하면 언급된 오류가 발생합니다.

이 문제를 해결하려면 맵에 저장된 원래 구조체를 주소 지정할 수 없다는 점을 이해하는 것이 중요합니다. 대신에 그것은 사본입니다. 따라서 모든 수정 사항은 지도의 원래 구조체에 반영되지 않습니다.

올바른 접근 방식은 지도에서 구조체를 검색하고 필요한 수정을 한 다음 지도에 다시 할당하는 것입니다. 다음은 이 접근 방식을 구현하는 수정된 코드입니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿