Menu
Coddy logo textTech

리시버 선택하기

Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨 — 68개 중 9번째.

이제 값 리시버와 포인터 리시버를 모두 이해했으므로, 핵심 질문은 이것입니다: 각각을 언제 사용해야 할까요? 결정은 메서드가 리시버를 가지고 무엇을 해야 하는지에 달려 있습니다.

메서드가 원래의 구조체를 수정해야 할 때는 포인터 리시버(pointer receiver)를 사용하세요. 포인터 리시버는 실제 구조체 인스턴스를 직접 다루기 때문에, 메서드 내부에서 발생한 모든 변경 사항은 메서드가 종료된 후에도 유지됩니다. 이는 필드를 업데이트하거나, 상태를 변경하거나, 원본 데이터에 영향을 주어야 하는 작업을 수행하는 메서드에 필수적입니다.

메서드가 구조체를 변경하지 않고 데이터만 읽어야 할 때는 값 리시버(value receiver)를 사용하세요. 값 리시버는 복사본을 대상으로 작동하므로, 값을 계산하거나 출력을 포맷팅하거나 원본 구조체를 수정할 필요가 없는 작업을 수행하는 메서드에 적합합니다. 또한 원본 데이터가 변경되지 않음을 보장하여 안전성을 제공합니다.

일반적인 규칙으로: 메서드가 struct를 변경하는 경우 pointer receiver를 사용하세요. 메서드가 struct에서 읽기만 하는 경우 value receiver를 사용하세요. 이러한 접근 방식은 코드의 의도를 명확하게 하고 데이터에 대한 의도치 않은 수정을 방지하는 데 도움이 됩니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

치트 시트

메서드가 원본 구조체를 수정해야 할 때는 포인터 리시버(pointer receiver)를 사용하세요:

  • 메서드 내부에서 변경된 사항은 메서드가 반환된 후에도 유지됩니다
  • 필드를 업데이트하거나 상태를 변경하는 메서드에 필수적입니다

메서드가 구조체에서 데이터를 읽기만 하면 될 때는 값 리시버(value receiver)를 사용하세요:

  • 복사본으로 작업하므로 원본 데이터는 변경되지 않은 상태로 유지됩니다
  • 값을 계산하거나 출력을 포맷하는 메서드에 적합합니다
  • 의도하지 않은 수정을 방지하여 안전성을 제공합니다

일반적인 규칙: 메서드가 구조체를 변경하는 경우 포인터 리시버를 사용하세요. 메서드가 구조체에서 읽기만 하는 경우 값 리시버를 사용하세요.

직접 해보기

이 레슨에는 코드 챌린지가 없습니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 & 흐름의 모든 레슨