Programming/Go

Go언어 리시버(receiver) 편

KayEsQuo 2021. 2. 26. 14:42

해당 주제는 리시버다.

 

설명하기에 앞서, 이번 코드에서는 구조체를 사용하고 있고, 이를 알고 있다는 전제하에 설명한다.

리시버는 특정 객체로부터 해당되는 함수를 정의하는 것이다. 즉 쉽게 말하면 특정 객체만 접근이 가능하다는 것이다.

따라서 아래에 그림에서 명시된 Add함수는 (n Number)리시버를 사용하여 Number 객체만 접근이 가능하도록 하였다.

 

[ 예시 ]

package main

import "fmt"

type Number struct {
	A int
	B int
}

func (n Number) Add(a, b int) int {
	return a + b
}

func main() {
	number := Number{A: 1, B: 2}
	result := number.Add(number.A, number.B)

	fmt.Println(result)  // 3
}

 

[ 주의사항 ]

리시버를 정의할때는 동일 package 내부에 선언을 해야 한다. 외부에 선언하여 참조를 시도하려고 하면, 컴파일이 되지 않는다. 자세한 예제와 설명은 글을 다시 작성할 예정이다. 우선 참고자료로 아래에 링크를 띄어두겠다.

 

golang.org/ref/spec#Method_declarations

'Programming > Go' 카테고리의 다른 글

Go언어 맵(map) 편  (0) 2021.02.26
Go언어 구조체(struct) 편  (0) 2021.02.26
Go언어 예외처리(panic, recover) 편  (0) 2021.02.26
Go언어 "import cycle not allowed" 편  (0) 2021.02.25
Go언어 [초간단] 명령어 Os.Args 편  (0) 2021.02.24