Golang – No Class(?) Learn Receiver

수신기를 쉽게 인식

처음에는 조금 당황했습니다.

수업이 없으면 OOP가 안되는데..??

지금까지 배웠기 때문에(MVC, Nest using DI Container 등)

이는 클래스를 사용하여 메서드를 호출하는 방식으로 코드가 작성되었기 때문입니다.

다행히 GO에는 그 역할을 하는 리시버가 있어서 간단하게 포스팅해보려고 합니다.

유형 계정 구조체 {
소유자 문자열
잔액 정수
}

은행 계좌의 계좌 구조를 예로 들어 보았습니다.

func NewAccount(소유자 문자열) *계정 {
계정 := 계정{소유자: 소유자, 잔액: 0}
반품 및 계정
}

이것은 새로운 계정을 생성하는 기능입니다. 금액을 늘리는 Deposit이라는 추가 기능을 만들어 보겠습니다.

func (a *계정) 입금(금액 int) {
a.잔액 += 금액
}

리시버라고 하는 함수 앞에 (*계정)이 있고,

다른 언어에서는 메서드를 의미하는 부분입니다.

정말 리시버를 연결하고 싶다면 구조체(오브젝트)를 연결하는 매개체로 이해하시면 됩니다.

다음을 사용하여 계정 구조에 액세스할 수 있습니다.

하지만 갑자기 *가 붙은 것을 원합니다 …

이것이 ‘가치’와 ‘참조’의 차이점입니다. (SQL 등에서는 all로 쓰지만 여기서는 다르다)

*를 추가하면 값이 참조가 되어 구조체의 원본이 변경됩니다.

그렇지 않으면 값이 복사됩니다.

위의 예시를 보면 *를 붙이지 않고 리시버를 사용하면 아무리 많은 돈을 입금해도

잔액은 0이 됩니다.

이 글을 쓰면서 느낀점

신기하지만 공부에는 끝이 없는 것이 분명합니다.

하지만 먼저 JS의 관점에서 이렇게 비교할 수 있는 것들을 보면

역시 놀랍습니다.

바둑은 아직 본격적인 수준이라기보다는 ‘경험’ 수준이다.

시간 나는대로 포스팅 하겠습니다.