golang 기초 질문 드립니다.
조회수 464회
func (block *blockEvent) toFilteredBlock() (*peer.FilteredBlock, error)
위 function 정의에서 toFilteredBlock이 함수 이름(인자 없음) 이고
리턴값이 (*peer.FilteredBlock, error) 로 보이는데 함수 맨앞에 (block *blockEvent) 는 무슨 의미 일까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
리시버라고 합니다.
쉽게 메소드를 선언할 때 사용한다고 생각하면 됩니다.
GO언어는 객체지향 언어는 아닙니다.
즉 class 도 없고 상속도 없습니다.
struct 가 존재하며 그 struct 를 리시버로 함수를 선언하면 꼭 객체지향의 메소드 같이 사용할 수 있게 됩니다. 또한 상속은 임베디딩을 통한 컴포지션으로 구현을 합니다. 즉 has a 관계를 만듭니다.
다형성은 interface 로 가능합니다.
아래 예제를 참고해보세요.
package main import ( "fmt" ) type Person interface { Walk() Sleep() } type Man struct { age int addr string name string } func (man *Man) Walk() { fmt.Println("남자가 걷는다.") } func (man *Man) Sleep() { fmt.Println("남자가 잔다.") } func CreateMan(age int, addr string, name string) (man *Man) { man = &Man{age: age, addr: addr, name: name} return man } func Execute(person Person) { person.Walk() person.Sleep() } func main() { var person Person person = CreateMan(10, "aaaa", "name") fmt.Println(person) Execute(person) }
댓글 입력