SYeonni Study Room

메소드와 포인터 indirection 본문

언어/Golang

메소드와 포인터 indirection

SYeonni 2022. 8. 3. 19:13

이전 두 프로그램을 비교하여 포인터 인수의 함수가 다음과 같은 포인터를 사용해야함을 알 수 있습니다.

var v Vertex
ScaleFunc(v, 5)  // Compile error!
ScaleFunc(&v, 5) // OK

포인터 리시버가 있는 메소드는 다음과 같이 호출될 때 값이나 포인터를 리시버로 받아들입니다.

var v Vertex
v.Scale(5)  // OK
p := &v
p.Scale(10) // OK

v 라는 문장의 경우, v.Scale(5)  v 가 포인터가 아니라 값인데도 포인터 리시버가 있는 메서드는 자동으로 호출됩니다.

즉, Scale 메서드가 포인터 리시버를 가졌기 때문에 편의상 Go는 v.Scale(5) 라는 것을 (&v).Scale(5) 로 해석합니다.

 

 

728x90

'언어 > Golang' 카테고리의 다른 글

반복문 돌면서 조건문 간단히 처리  (0) 2022.08.04
Interfaces  (0) 2022.08.03
포인터 리시버  (0) 2022.08.03
Function closures (함수 클로저)  (0) 2022.08.03
Map(맵) 순회하기  (0) 2022.08.03